Chcę uruchomić zautomatyzowane testy NUnit dla aplikacji C #, co noc i przy każdym zatwierdzeniu do svn.
Czy to jest coś, co może zrobić Jenkins-CI?
Czy istnieje samouczek online lub dokumentacja, która dokumentuje podobną konfigurację, którą mogę obejrzeć?
c#
continuous-integration
hudson
jenkins
Blueberryfields
źródło
źródło
Odpowiedzi:
Musiałem zrobić dokładnie to, co robisz, oto jak skonfigurowałem Jenkins, aby to zrobić:
Pojedynczy test DLL:
Test wielu bibliotek dll przy użyciu projektów testowych NUnit :
Po zbudowaniu projektu NUNit będzie teraz działał, a wyniki będą widoczne na pulpicie nawigacyjnym (jeśli najedziesz kursorem na ikonę raportu o pogodzie) lub na stronie projektu w sekcji Wynik ostatniego testu .
Możesz również uruchomić polecenie z poziomu programu Visual Studio lub w ramach lokalnego procesu kompilacji.
Oto dwa posty na blogu, których użyłem w celach informacyjnych. Nie znalazłem żadnego, który dokładnie pasowałby do moich wymagań:
1-godzinny przewodnik po konfiguracji ciągłej integracji: Jenkins spełnia .Net (2011)
Przewodnik po tworzeniu projektów .NET przy użyciu Hudson (2008)
źródło
"C:\Program Files (x86)\NUnit 2.6.3\bin\nunit-console-x86.exe" UnitTests/UnitTests.nunit
. U mnie zadziałało idealnie.Jeśli nie chcesz na stałe zakodować projektów testów jednostkowych, lepiej napisać skrypt, który pobierze wszystkie biblioteki DLL projektu testów jednostkowych. Robimy to za pomocą programu PowerShell i przestrzegamy określonej konwencji nazywania naszych projektów testów jednostkowych. Oto zawartość pliku PowerShell, który uruchamia nasze testy jednostkowe:
Skrypt jest na tyle solidny, że używamy go ponownie do wszystkich naszych zadań kompilacji. Jeśli nie podoba ci się pełna ścieżka do konsoli NUnit, zawsze możesz umieścić tę lokalizację w zmiennej środowiskowej PATH.
Następnie umieszczamy plik RunUnitTests.ps1 na naszym serwerze kompilacji i używamy tego polecenia wsadowego:
źródło
[string] $sourceDirectory = $(get-location)
i dla ścieżek ze spacjami, musiałem zmienić przepustkę montażową na nUnit na$cFiles = $cFiles + '"' + $file + '"' + " "
Do prac rolniczych Nunit 3 lub nowszych:
Krok budowy (wiersz poleceń systemu Windows)
"c:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe" c:\AutomationTraining\CSharpSelenium\bin\Debug\test.dll --result=TestR.xml;format=nunit2
Krok po opublikowaniu raportu Nunit, pokazuje tylko plik wyników testu w katalogu obszaru roboczego Jenkins, a nie w Twoim projekcie: TestR.xml
Musimy zrobić wyniki testów w formacie nunit2, ponieważ teraz wtyczka Jenkins Nunit nie rozpoznaje formatu wyników Nunit3. Również format ciągu opcji jest inny:
--result=TestR.xml;format=nunit2
NIE/xml=nunit-result.xml
źródło
Działa to ładnie, już to ustawiłem.
Skonfiguruj NUnit, aby wyprowadzał wyniki do pliku XML i skonfiguruj wtyczkę NUnit Jenkins, aby używała tego pliku XML. Wyniki będą dostępne na pulpicie nawigacyjnym.
Teraz, jak wywołasz NUnit, zależy od Ciebie. Sposób, w jaki to zrobiliśmy, był następujący: zadanie Jenkinsa wykonuje zadanie NAnt target wykonuje zestaw testów NUnit.
Możesz skonfigurować zadania Jenkinsa, aby były uruchamiane po zatwierdzeniu i / lub zaplanowane w określonym czasie.
źródło
Rozwiązanie Ralpha Willgossa działa dobrze, ale zmieniłem 2 rzeczy, aby było świetne:
a) Użyłem bezpośrednio projektu NUnit zamiast pliku DLL. Ułatwia to dodawanie większej liczby złożeń lub konfigurowanie testu w interfejsie GUI NUnit.
b) Dodałem jeszcze jedną linię do partii, aby zapobiec niepowodzeniu kompilacji w przypadku niepowodzenia testu:
Wspomniana wtyczka NUnit automatycznie oznacza kompilację jako NIESTABILNĄ , co jest dokładnie tym, czego chcę, gdy test zakończy się niepowodzeniem. Pokazuje żółtą kropkę.
źródło
Myślę, że lepiej jest zawieść kompilację, gdy nie przejdzie, aby jej nie wdrażać. Zrób coś takiego:
Źródła: http://www.greengingerwine.com/index.php/2013/01/tip-check-errorlevel-in-your-post-build-steps-when-using-nunit/
źródło
Jenkins ma wtyczki, które to obsługują. Dokładna konfiguracja będzie w dużym stopniu zależeć od konfiguracji projektu. Istnieją specyficzne wtyczki dla nUnit, MSBuild, nAnt itp. Zacznij od obejrzenia strony z wtyczkami, ale nie powinno być to strasznie trudne do rozgryzienia.
źródło
Oto moje rozwiązanie do uruchamiania OpenCover z vstest w Jenkins:
Każda testowa biblioteka dll jest wykonywana w ramach własnego procesu, ponieważ mieliśmy problemy z wykonaniem wszystkich testowych bibliotek dll w jednym procesie (problemy z ładowaniem zestawu).
źródło
Dla .Net Core wystarczy dodać krok budowania "wykonaj powłokę" z następującym skryptem:
Następnie dodaj akcję „Opublikuj raport wyników testu MSTest” po kompilacji, aby wyniki testu były widoczne.
Domyślna ścieżka raportów z testów powinna być
**/*.trx
i będzie publikować wszystkie utworzone.trx
pliki.źródło