技术开发 频道

Nunit使用资料

    创建MoneyTest的实例:

    new MoneyTest("TestMoneyMoneyBag")

    当这个测试运行起来时,测试会查找测试方法的名字并调用它。一旦有多个测试,就可以把他们组织成一个Suite。

    Suite
    如何一次进行多个测试?NUnit提供了TestSuite,它可以一次运行任意数目的测试。例如,运行一个单独的测试用例:

    TestResult result= (new MoneyTest("TestMoneyMoneyBag")).Run();

    创建一个有两个测试用例的suite并且一次运行它们:

TestSuite suite= new TestSuite();

suite.AddTest(new MoneyTest("TestMoneyEquals"));

suite.AddTest(new MoneyTest("TestSimpleAdd"));

TestResult result= suite.Run();

    另一种方法是让NUnit从一个TestCase吸取出一个suite,只需把你的TestCase传给TestSuite的constructor即可:

TestSuite suite= new TestSuite(typeof(MoneyTest));

TestResult result= suite.Run();

    当创建只包含一个测试用例子类的suite时,使用手工方法。否则就采用自动方法,它避免了在每增加新的测试用例时都要改变suite的创建代码。

TestSuites并不是只能包含TestCase类。它可以包含实现了ITest的任意对象。例如,你可以在你的代码中创建一个TestSuite,同样我也可以在我的代码中这样做。那么我们就可以创建一个包含它们的TestSuite来一次运行它们:

TestSuite suite= new TestSuite();

suite.AddTest(Kent.Suite());

suite.AddTest(Erich.Suite());

TestResult result= suite.Run();

TestRunner
    如何运行这些测试并收集结果呢?NUnit提供了定义suite运行和显示结果的工具。为了使你的suite对于TestRunner时可存取的,必须定义一个返回测试suite 的static property Suite。

    例如,在MoneyTest中加入以下代码使MoneyTest suite对于TestRunner可用:

public static ITest Suite {

  get {

    TestSuite suite= new TestSuite();

    suite.addTest(new MoneyTest("TestMoneyEquals"));

    suite.addTest(new MoneyTest("TestSimpleAdd"));

    return suite;

  }

}

    如果一个TestCase类不定义一个suite方法,TestRunner将自动产生用所有方法来填充的suite,并在这些方法名字前加上前缀“Test”。NUnit提供两种TestRunner:GUI和字符版本。

    GUI窗口包含:填写包含测试类的DLL 或EXE名字的文本框;填写在DLL 或EXE中拥有Suite属性的类名。如下图:

    在reload已编译类的动态编程环境中,你可以不需要NUnit窗口。在其他环境中,你必须为每次运行不断重启GUI版本。这是非常乏味和费时的工作,这在将来的版本中会得到改进。

    同样,有一个NUnit的批处理接口。为了使用命令行的NUnit,可以在系统提示符下键入NUnitConsole后跟包含Suite属性的类所在的装配体。例如,使用批处理TestRunner测试MoneyTest:

    C:\NUnitConsole NUnit.Samples.Money.MoneyTest,NUnitSamples.dll

    批处理接口将结果以文本的方式输出。另一个可选方法是在你的TestCase类的main方法中调用批处理接口。如下:

public static void Main(String[] args) {

    NUnit.TextUI.TestRunner.Run(Suite);

}

    这样,只需在系统提示符下键入MoneyTest 就可运行测试。

0
相关文章