NUnit中的MbUnit的行属性?

时间:2010-09-14 07:30:43

标签: asp.net-mvc unit-testing tdd nunit mbunit

在阅读使用MbUnit作为测试框架的Asp.Net MVC代码示例时,我看到可以通过使用Row属性对多个输入可能性运行单个测试,如下所示:

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

请问我是否想知道NUnit是否等同于MbUnit的Row属性,或者是否是在NUnit中实现此目的的优雅方式。感谢。

2 个答案:

答案 0 :(得分:10)

我认为你是在TestCase属性之后

[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

答案 1 :(得分:2)

NUnits Sequential attribute正是如此。

  

SequentialAttribute用于a   测试以指定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) 
{ 
    ... 
}