1

有 2 个测试在使用 Row() 属性时采用相同的服务器列表

有没有办法避免在两个测试中重复所有 Row 属性?

[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
}
4

1 回答 1

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 的最新版本中,没有 Row 或 RowTest 属性,有关更多信息,请访问此问题:nunit extensions/rowtest 发生了什么?

于 2012-03-10T12:17:37.053 回答