2008-12-09 14 views
19

Czy możliwa jest integracja z testem MS Hudson?Integracja Hudsona z testem MS?

Konfiguruję mniejszy serwer CI na mojej maszynie programistycznej z Hudsonem w tej chwili, tak, że mogę mieć pewne statystyki (np. FxCop i ostrzeżenia kompilatora). Oczywiście byłoby również miło, gdyby mógł po prostu uruchomić moje testy jednostkowe i przedstawić ich wyniki.

Do tej pory dodałem następujące zadanie wsadowe do Hudsona, co sprawia, że ​​poprawnie przeprowadza testy.

"%PROGRAMFILES%\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe" /runconfig:LocalTestRun.testrunconfig /testcontainer:Tests\bin\Debug\Tests.dll 

Jednak, o ile wiem, Hudson nie obsługuje jeszcze analizy wyników testu MS. Czy ktoś wie, czy pliki TRX wygenerowane przez MSTest.exe mogą zostać przekształcone na format wyniku JUnit lub NUnit (ponieważ są obsługiwane przez Hudson), czy też istnieje inny sposób integracji testów jednostek testowych MS z Hudsonem?

Odpowiedz

16

Hudson ma nową wtyczkę dla MSTest. Po prostu określ lokalizację pliku .trx, a praca zostanie wykonana za Ciebie. Nie zdziwiłbym się, gdyby wtyczka zastosowała rozwiązanie Allena.

+0

, muszę to sprawdzić, aby sprawdzić, czy dodaje funkcjonalności, których nie ma moje rozwiązanie . –

+0

Wow, jak mogłem tęsknić za wypuszczeniem? Sądzę, że spróbuję jutro. – hangy

+0

Myślę, że ta wtyczka na razie pokrywa moje potrzeby. Jeśli ktoś potrzebuje czegoś bardziej wyrafinowanego, zasugeruj próbę Allena. – hangy

0

Hudson ma , które można wykorzystać do wykreślenia danych ogólnych. To nie jest najłatwiejsza wtyczka do konfiguracji i używania, jeśli masz wiele punktów danych na wykres, ale jeśli możesz analizować wyniki MS Test i generować pliki wejściowe dla wtyczki, możesz przynajmniej wykreślić trendy nieudanych, udanych i całkowite testy.

+0

Dzięki za podpowiedź. To brzmi jak ostateczność - łatwiej byłoby przekształcić format .TRX (XML) w JUnit/NUnit za pomocą XSLT. – hangy

0

Nie byłem w stanie użyć Hudson do wykonania analizy wyników testu MS dla celów historycznych, ale przynajmniej udało mi się dowiedzieć, że jeśli używasz MSBuild i zadania Exec, kompilacja Hudsona będzie poprawnie być oznaczone jako "nieudane", jeśli którykolwiek z testów zakończy się niepowodzeniem.

<Exec Command=""C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\mstest.exe" /testcontainer:"MyAssembly.dll"" /> 
17

Byłem rozumieniu napisać to jako przewodnika i rozwijać wtyczki ale miałaś dostał się wokół niej. Wiem, że to pytanie jest stare, ale jestem pewien, że ktoś tam chce tego samego, więc oto jest.

W konfiguracji projektu na Hudson:

wykonania polecenia partii Okna


SET MSTest="C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe" 
SET XSLParser="C:\MsBuildNunit\msxsl.exe" 

SET TestDLL=path-to-your-test-projects.dll 
SET TestOutFILE=TestResults\some-unique-filename.trx 
SET TransformedOutputFile=%TestOutFILE:.trx=%.xml 
SET XSLFile=c:\MsBuildNunit\MSBuild-to-NUnit.xslt 

MKDIR TestResults 

%MSTest% "/testcontainer:%TestDLL%" /nologo /resultsfile:%TestOutFILE% 

%XSLParser% %TestOutFILE% %XSLFile% -o %TransformedOutputFile% 

SET ERRORLEVEL=0 

Następnie zaznacz pole "Publish NUnit Test Report Result" i "plików XML raport Test" wpisać

TestResults/*.xml

Istnieje XSLT w C: \ MsBuildNunit oraz msxsl.exe, który pochodzi od Microsoft.

Można pobrać MSBuild do NUnit.xslt z here i dostać msxsl.exe z Microsoft here lub można po prostu dostać spakowany kopię mojego folderu MsBuildNunit zawierający XSLT i exe here

Po uruchomieniu wywołuje MSTest.exe, który uruchamia testy i wyprowadza format w formacie microsofts trx (xml). Następnie wywołuje msxsl.exe z xslt i trx i tłumaczy go na format xml nunits. Pod koniec kompilacji Hudson odbiera go jak każdy inny wynik testu Nunit i dobrze ci idzie.

Edytowane w celu dodania: Zapomniałem wspomnieć, z tym xslt otrzymujemy pełne wyniki testu.Mamy wiele projektów testowych i wiele bibliotek dll, a my otrzymujemy świetną informację zwrotną z możliwością wykresu trendów, przeglądania testów według nazwy, przeglądania statusów testów, a jeśli błędy, otrzymujemy komunikat o błędzie wraz ze śledzeniem stosu. Zasadniczo prawie wszystko, co można uzyskać dzięki Nunit.

Edytuj (ponownie): Właśnie dodałem czas trwania testu w transformacji, aby teraz pojawił się w Hudsonie! Wydaje się, że świetnie nadaje się do naszych testów.

Edytuj: Wypróbowałem nową wtyczkę MSTest i obecnie nie obsługuje ona parsowania wielu plików TRX, tylko 1, więc obecnie jest to jedyne rozwiązanie, jeśli jesteś podobny do nas i masz wiele zestawów testowych, które musisz uruchomić przez MSTest .

+0

To wygląda świetnie, dzięki! Mogę spróbować jutro, w zależności od tego, co ta nowa wtyczka MSTest ma do zaoferowania. – hangy

+0

Właśnie się dowiedziałem, że wtyczka MSTest nie obsługuje parsowania wielu plików trx, więc to coś ma nad tym rozwiązaniem. –

+1

Wtyczka Jenkins MSTest obsługuje wiele plików TRX, teraz: https://issues.jenkins-ci.org/browse/JENKINS-8520 – exclsr

2

Udało mi się użyć wariantu wiersza polecenia "hangy" i wtyczki MSTest, aby pomyślnie uruchomić i zanalizować/opublikować przypadki testowe. Największą zmianą, jaką wprowadziłem, było określenie pliku wyjściowego dla mstest.exe, a przed wtyczką MSTest, aby ten plik był używany (nie wolno używać symboli wieloznacznych ... musi to być nazwa pliku). Na przykład po to mój zwyczaj etap budowy:

"%PROGRAMFILES%\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe" /runconfig:LocalTestRun.testrunconfig /testcontainer:MyProject1.Test/bin/Debug/MyProject1.Test.dll /testcontainer: MyProject2.Test/bin/Debug/MyProject2.Test.dll /resultsfile:TestResults\HudsonJobTestResults.trx 

exit 0

Zauważ, że „plik wyników” jest w stosunku do obszaru roboczego Hioba. Tak więc plik wyników wtyczki MSTest do przeanalizowania to:

TestResults\HudsonJobTestResults.trx 

I to wszystko!