1. 编写待测试类框架
2. 编写测试程序(using NUnit.Framework)
3. 完成待测试类代码
4. 运行NUnit程序,加入编译后的待测试类程序(dll, exe etc)
详细说明
1. 编写待测试类框架
using System;
namespace TestNUnit
{
/// <summary>
/// Ticket 的摘要说明。
/// </summary>
public class Ticket
{
private int amount;
public Ticket()
{
amount = 0;
}
public int Amount
{
get
{
return amount;
}
}
public void Add(int num)
{
}
public void sell()
{
}
}
}
说明:根据xp的思想,单元测试案例应该在代码编写之前完成,但类框架是必须的。我可以用Rose等辅助设计工具进行类的设计,然后生成类框架。在类设计时,就已经应该考虑到测试代码如何生成。
2. 编写测试程序(using NUnit.Framework)
using System;
using NUnit.Framework;
namespace TestNUnit
{
/// <summary>
/// TicketTest 的摘要说明。
/// </summary>
[TestFixture]
public class TicketTest
{
public TicketTest()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
[Test]
public void Add()
{
Ticket ticket = new Ticket();
ticket.Add(80);
Assert.AreEqual(80, ticket.Amount);
//Assertion.AssertEquals(80, ticket.Amount);
}
[Test]
public void Sell()
{
Ticket ticket = new Ticket();
ticket.Add(29);
ticket.sell();
ticket.sell();
ticket.sell();
Assert.AreEqual(26, ticket.Amount);
}
[Test]
[ExpectedException(typeof(Exception))]
public void ExcpetionTesting()
{
Ticket ticket = new Ticket();
ticket.Add(3);
ticket.sell();
ticket.sell();
ticket.sell();
ticket.sell();
}
}
}
说明:与java中不同,测试类并没有继承自TestCase,而只是加入了些空间说明
[TestFixture] 测试类
[Test] 测试函数
[ExpectedException(typeof(Exception))] 测试异常
关于函数前面加[]的用处我还是不太明白,xUnit中有多少种测试我也是不太明白。这些要去补
3. 完成待测试类代码
using System;
namespace TestNUnit
{
/// <summary>
/// Ticket 的摘要说明。
/// </summary>
public class Ticket
{
private int amount;
public Ticket()
{
amount = 0;
}
public int Amount
{
get
{
return amount;
}
}
public void Add(int num)
{
amount += num;
}
public void sell()
{
amount -= 1;
if (amount < 0)
{
amount = 0;
throw new Exception("Amount 不能为0");
}
}
}
}
4. 运行NUnit程序,加入编译后的待测试类程序(dll, exe etc)
与java中的测试方式不同(程序执行方法不一样),java用java命令执行特定类,jbuilder更集成了JUnit,可以在IDE中使用。
windows程序当然是直接打开了。选择要测试的exe或dll等。点Run即可。All grenn is OK!
总结
在项目中如何才能保证更准确的测试,在案例编写,程序设计时都要仔细思想。而xunit的更详细使用要进一步挖掘
网络资源参考
http://www.microsoft.com/china/community/Column/59.mspx