2012-03-09 65 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?