2015-06-14 10 views
5

Witam Jestem nowy w Nunit i przekazuję serię obiektów do TestCase jako TestCaseSource. Z jakiegoś powodu jednak Nunit wydaje się uruchomić test najpierw przekazywane do niej co skutkuje ignorowane wyjście bez parametrów:Nunit uruchamia TestCase z TestCaseSource z pierwszą iteracją bez parametrów? Czemu?

Test:

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 badania), nie powiodło się: Jeden lub więcej testów dziecko miało błędy TheCountsAreCorrect() ignorowane: żadne argumenty zostały dostarczone TheCountsAreCorrect (System.Collections.Generic.List 1[System.String],2), Success TheCountsAreCorrect(System.Collections.Generic.List 1 [system.string], 3), Sukces

Tak więc pierwszy test jest ignorowany, ponieważ nie ma żadnych parametrów, ale nie chcę tego uruchomienia testu, nigdy nie ma sensu i jest to mucking moje wyniki testu. Próbowałem zignorować to i to ustawia wynik testu poprawnie, ale wraca, gdy ponownie wykonuję wszystkie testy.

Jest coś, czego mi brakuje, szukałem wszędzie.

Odpowiedz

6

TestCase i zrobić dwie różne rzeczy. Musisz tylko usunąć atrybut TestCase.

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

Atrybut TestCase jest do dostarczania danych wbudowanych, więc NUnit próbuje dostarczyć żadnych parametrów do testu, który się niepowodzeniem. Następnie przetwarza atrybut TestCaseSource i sprawdza dane, które dostarcza i próbuje je przekazać również do testu, który działa poprawnie.

Na marginesie, ściśle mówiąc, docs sugerują, że należy również zaznaczyć test TestCaseSource z atrybutu jak poniżej Test, jednak nigdy nie znalazł to za konieczne:

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

Dzięki forsvarir było moje błędne odczytanie tekstu, co oznaczało, że korzystałem z TastCase zamiast Test. Dziękuję Ci – Phil

Powiązane problemy