Атрибут строки MbUnit в NUnit? - PullRequest
7 голосов
/ 14 сентября 2010

При чтении примера кода Asp.Net MVC, в котором в качестве среды тестирования использовался MbUnit, я увидел, что можно выполнить один тест для нескольких возможностей ввода, используя атрибут Row, например:

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

Пожалуйста, я хотел бы знать, есть ли NUnit-эквивалент атрибута Row MbUnit или иным образом элегантный способ добиться этого в NUnit. Спасибо.

Ответы [ 2 ]

10 голосов
/ 14 сентября 2010

Я думаю, что вы после атрибута 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

2 голосов
/ 14 сентября 2010

NUnits Последовательный атрибут делает именно это.

SequentialAttribute используется на тест, чтобы указать, что NUnit должен создать контрольные примеры, выбрав отдельные элементы данных, предоставленные для параметры теста, без генерация дополнительных комбинаций.

Примечание: если данные параметров предоставляются несколько атрибутов, порядок в который NUnit использует элементы данных не гарантировано. Тем не менее, это может быть Ожидается, что останется неизменным в течение учитывая время выполнения и операционную систему.

Пример Следующий тест будет выполняется три раза следующим образом:

MyTest (1, "A")
MyTest (2, "B") MyTest (3, ноль)

 [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) 
{ 
    ... 
} 
...