在阅读使用MBunit作为测试框架的ASP.NET MVC代码样本时,我看到可以通过使用一行属性来对多个输入可能性进行单个测试,例如:

[Test]
[Row("test@test_test.com")]
[Row("sdfdf dsfsdf")]
[Row("sdfdf@.com")]
public void Invalid_Emails_Should_Return_False(string invalidEmail)
{
    ...
}

请我想知道是否有相当于Mbunit的行属性的Nunit,或者是在Nunit中实现这一目标的优雅方法。谢谢。

有帮助吗?

解决方案

我想您追求测试柜属性

[TestCase(12,3,4)]
[TestCase(12,2,6)]
[TestCase(12,4,3)]
public void DivideTest(int n, int d, int q)
{
  Assert.AreEqual( q, n / d );
}

http://www.nunit.com/index.php?p=testcase&r=2.5.7

其他提示

Nunits 顺序属性 做到这一点。

SequentialAttribute用于测试中,以指定Nunit应通过选择为测试参数提供的单个数据项生成测试用例,而无需生成其他组合。

注意:如果参数数据由多个属性提供,则不能保证Nunit使用的数据项。但是,可以预期在给定的运行时和操作系统中保持恒定。

示例以下测试将执行三次,如下:

mytest(1,“ a”)
mytest(2,“ b”)mytest(3,null)

 [Test, Sequential]
 public void MyTest(
     [Values(1,2,3)] int x,
     [Values("A","B")] string s) 
 {
     ... 
 }

以您的榜样,这将成为

[Test, Sequential] 
public void IsValidEmail_Invalid_Emails_Should_Return_False(
  [Values("test@test_test.com"
          , "sdfdf dsfsdf"
          , "sdfdf@.com")] string invalidEmail) 
{ 
    ... 
} 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top