2009-05-15 34 views
33

Korzystając z Nunit, chcę móc napisać urządzenie testowe, które odczyta wszystkie nazwy plików w określonym katalogu i utworzy test dla każdego pliku.Dynamicznie tworzyć testy w NUnit

Mogłem dość łatwo napisać jedną metodę testowania, która skanuje katalog i po prostu wykonuje wszystkie testy, ale kiedy uruchomię NUnit, chcę móc zobaczyć każdy z testów indywidualnie.

Czy to możliwe?

Odpowiedz

46

Znalazłem sposób, który pasuje do moich celów

mieć jeden przypadek testowy, oraz oznaczyć je z TestCaseSource atrybutów jak tak

[Test, TestCaseSource("GetTestCases")] 
public void TestFile(string filename) 
{ 
    //do test 
} 

następnie napisać GetTestCases czytać wszystko nazwy plików w katalogu

private static string[] GetTestCases() 
{ 
    return GetAllFilesInCurrentDirectory(); 
} 

Kiedy zaczynam NUnit, otrzymuję listę testów do sprawdzenia uruchom (na liście w opcji TestFile).

+0

Ładne i proste. Ten atrybut jest również dość elastyczny, jak opisano w dokumentach (odnoszących się do v2.5.2) tutaj: http://nunit.com/index.php?p=testCaseSource&r=2.5.2 –

+0

NUnit rocks !! To uprościło sprawę. Używam tej funkcji do testów integracyjnych. – AksharRoop

+0

Jak sprawić, aby działała w programie ReSharper? Wyświetla błędy i kończy się niepowodzeniem w skrzynkach wiadomości zamiast wyświetlać stos w sesji testowej. – moudrick

3

Wypróbuj rozszerzenie NUnit z .

+0

+1 wygląda interesująco – bendewey

1

Jeśli nie będą dodawania plików do tego katalogu w czasie i mieć zestaw nazw przechodzą w jako wkład do ogólnego testu, spróbuj użyć RowTest NUnit extension (część std distrib postu v2. 4.7) - Możesz zobaczyć każdy przypadek testowy - kombinację wprowadzania indywidualnie w GUI zgrupowanym pod jednym węzłem.

Jeśli jesteś będzie dodawanie plików do tego katalogu, będę pisać pojedynczy NUnit TestCase że pętle na liście plików uzyskanych w czasie wykonywania i wywołuje ogólną metodę testową z każdym filePath. Użyj pliku collecting parameter, aby zbierać uszkodzone nazwy plików testowych - na końcu możesz to potwierdzić. Nie można zobaczyć poszczególnych przypadków testowych, ale można uzyskać czytelny prosty kod testowy.

Assert.AreEqual(listOfFailedFiles.Length, 0, PrettyPrint(listOfFailedFiles)) 
+0

O ile nie masz tysięcy testów ... może to potrwać do kilku godzin. – eocron

0

Wiem, że jest to trochę niejasne, ale użyłem skryptu w przeszłości do wygenerowania kodu, który mógłbym następnie wykonać jako indywidualne przypadki testowe.

Powiązane problemy