2010-09-14 2 views
7

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

[Test] 
[Row("[email protected]_test.com")] 
[Row("sdfdf dsfsdf")] 
[Row("[email protected]")] 
public void Invalid_Emails_Should_Return_False(string invalidEmail) 
{ 
    ... 
} 

Пожалуйста, я хотел бы знать, есть ли эквивалент NUnit атрибута RGB MbUnit, или иначе элегантный способ добиться этого в NUnit. Благодарю.

ответ

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

+1 - 'TestCaseAttribute' приводит к гораздо более удобным для чтения тестового кода при использовании нескольких параметров, чем при использовании' 'ValuesAttribute' с SequentialAttribute'. Я использовал бы только «ValuesAttribute», если бы захотел использовать какую-то комбинацию, отличную от той, которая указана 'SequentialAttribute'. –

+0

+1 что он сказал ... –

2

NUnits Sequential attribute делает именно это.

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

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

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

MyTest (1, "А")
MyTest (2, "Б") 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("[email protected]_test.com" 
      , "sdfdf dsfsdf" 
      , "[email protected]")] string invalidEmail) 
{ 
    ... 
}