2015-06-14 4 views
5

Привет Я новичок в Nunit, и я передаю серию объектов в TestCase в качестве TestCaseSource. По некоторым причинам, хотя Nunit кажется запустить тест первым без параметров, передаваемых в него, что приводит к игнорированию выхода:Nunit запускаетTestCase с TestCaseSource с первой итерацией без параметров? Зачем?

Тест:

private readonly object[] _nunitIsWeird = 
{ 
    new object[] {new List<string>{"one", "two", "three"}, 3}, 
    new object[] {new List<string>{"one", "two"}, 2} 

}; 

[TestCase, TestCaseSource("_nunitIsWeird")] 
public void TheCountsAreCorrect(List<string> entries, int expectedCount) 
{ 
    Assert.AreEqual(expectedCount,Calculations.countThese(entries)); 
} 

TheCountsAreCorrect (3 теста), не удался: один или больше ребенка тесты были ошибки TheCountsAreCorrect(), Игнорируется: Никакие аргументы не были предоставлены TheCountsAreCorrect (System.Collections.Generic.List 1[System.String],2), Success TheCountsAreCorrect(System.Collections.Generic.List 1 [System.String], 3), Success

Итак, первый тест игнорируется, потому что нет параметров, но я не хочу, чтобы этот тестовый прогон был когда-либо, это не имеет смысла, и он сбрасывает мой тестовый результат. Я попытался игнорировать его, и он правильно устанавливает тестовый выход, но он возвращается, когда я снова запускаю все тесты.

Есть что-то, что мне не хватает, я везде искал.

ответ

6

TestCase и TestCaseSource делать две разные вещи. Вам просто нужно удалить атрибут TestCase.

[TestCaseSource("_nunitIsWeird")] 
public void TheCountsAreCorrect(List<string> entries, int expectedCount) 
{ 
    Assert.AreEqual(expectedCount,Calculations.countThese(entries)); 
} 

Атрибут TestCase предназначен для подачи встроенных данных, таким образом, NUnit пытается не предоставлять никаких параметров к испытанию, которое терпит неудачу. Затем он обрабатывает атрибут TestCaseSource и ищет данные, которые он поставляет, и пытается передать это на тест, а также работает правильно.

Как примечание стороны, строго говоря, документы свидетельствуют о том, что вы должны также отметить свой TestCaseSource тест с атрибутом Test, как показано ниже, однако я никогда не находил это необходимо:

[Test, TestCaseSource("_nunitIsWeird")] 
public void TheCountsAreCorrect(List<string> entries, int expectedCount) 
+0

Благодаря forsvarir, это было мое неправильное чтение текста, что означало, что я использовал TastCase вместо Test. спасибо – Phil

 Смежные вопросы

  • Нет связанных вопросов^_^