2012-03-09 62 views
1

有2个测试,采取相同的服务器列表中使用行()属性如何重用进行各种测试[RowTest]属性

有没有一种方法,以避免重复在这两项测试的所有行属性?

[RowTest] 
[Row("server1")] 
[Row("server2")] 
[Row("server3")] 
public void Test1(string server) 
{ 
    //try connecting on port 
} 

[RowTest] 
[Row("server1")] 
[Row("server2")] 
[Row("server3")] 
public void Test2(string server) 
{ 
    //ping server 
} 

回答

1

是的。您可以定义测试用例的来源。源可以是方法,字段或属性,可以是静态的或实例。要求是源应该返回IEnumberable或实现它的其他类型。当然,这些源可以重复使用多种测试方法,这是您的要求。

您通过使用TestCaseSourceAttribute修饰方法来指明测试用例的来源。下面的代码段是我提供的链接的一个例子。

static int[] EvenNumbers = new int[] { 2, 4, 6, 8 }; 

[Test, TestCaseSource("EvenNumbers")] 
public void TestMethod(int num) 
{ 
    Assert.IsTrue(num % 2 == 0); 
} 

而且考虑到在NUnit的最新优化版本中,没有行或RowTest属性,以获取更多信息,请访问这个问题:What happended to nunit extensions/rowtest?