[ValueSource]:以数据源(Object类型)作为参数,如下图,左边是源程序,右边是编译后生成的子测试
[Combinatorial]:两组测试数据进行组合,下面的代码会生成12个子测试,如图
[Sequential]:和上面[Combinatorial]的类似,不同之处见下图
下面其它的Attribue也都大同小异,不愿意看文字说明的话,大家用NUnit运行一下示例程序,再对比一下源程序知道了
[Range]:生成某个数据范围内的子测试,如
TestPrintColsole([Range(0.2, 0.6, 0.2)] double d):生成0.2,0.4,0.6三个子测试用例TestPrintColsole([Values(1, 2, 3, 4, 5, 6)] int x, [Range(0.2, 0.6, 0.2)] double d):两个Attribuee结合,共生成18个子测试用例
[Random]:在某个范围内随机生成测试用例,
TestPrintColsole([Random(-1.0, 1.0, 5)] double d):-1到1之间生成5个测试用例TestPrintColsole([Values(1, 2, 3, 4, 5, 6)] int x, [Random(-1.0, 1.0, 5)] double d) :共生成30个子测试用例
三:平台类
[Culture]:当Culture满足某条件下,才执行测试,如:
[Culture("fr-FR")]:仅当在法文Culture时,执行测试[Culture(Exclude = "en,de")]:非英文和德文Culture时,才执行测试
[Platform]:当Platform满足某条件下,才执行测试,如:
[Platform("NET-4.0")]:仅当framework版本是4.0时,才执行测试
下面是NUnit官网声称的,其支持的平台类型:
Win Win32 Win32S Windows Win32NT
WinCE Win95 Win98 WinMe NT3
NT4 NT5 NT6 Win2K WinXP
Win2003Server Vista Win2008Server Win2008ServerR2 Windows7
Unix Linux Net Net-1.0 Net-1.1
Net-2.0 Net-3.0 Net-3.5 Net-4.0 NetCF
SSCLI Rotor Mono Mono-1.0 Mono-2.0
Mono-3.0 Mono-3.5
四:其它类
[Category]:将测试方法分组,NUnit会取出所有的组名,列在Categories中,点击它可以看到。这提供了另外一种测试用例的运行方法,用户可以在些选择某一类的用例进行测试,而不是只能以点击分单位
[ExpectedException]:运行时抛出的异常才能预期的行为。
如果没有这个Attribute,要测试某些异常时,只能使用Try Catch的方式,而下面的代码则更为简洁:
[Test][ExpectedException(typeof(System.DivideByZeroException))]//发生DivideByZeroException时,测试通过public void Test1(){ int a = 0; int b = 1 / a; PrintConsole