2016-09-12 28 views
6

Mam projekt, który zawiera testy, które uruchamiam z Mocha z wiersza poleceń. Mam skonfigurować skrypt testowy w moim packages.json, która wygląda następująco:Uruchom "test węzła" jako część zadania kompilacji Visual Studio Team Services z wynikami w zakładce "testy"

"test": "mocha ./**/*.spec.js --reporter dot --require jsdom-global/register"

mam obecnie ma proste zadanie utworzenia w Visual Studio Team Services, która po prostu działa komenda npm test ta biegnie Mocha w konsoli i kontynuuje/zawiesza kompilację w zależności od tego, czy testy przebiegły pomyślnie.

Chciałbym, aby wyniki moich testów wypełniły zakładkę "testy" w definicji kompilacji po jej uruchomieniu. W ten sam sposób, w jaki mogę uzyskać tę zakładkę, jeśli testuję kod C#.

Próbowałem użyć Chutzpah do tego, ale jest to zbyt skomplikowane i wydaje się wymagać, aby przeskoczyć przez wszelkiego rodzaju obręcze, które oznaczają zmianę moich testów i pisanie długich plików konfiguracyjnych. Mam już napisanych wiele testów, więc naprawdę nie chcę tego robić. Kiedy w końcu odkrył którykolwiek z moich testów, skarżył się na require i inne rzeczy związane z modułami Node.

Czy naprawdę o to proszę? Czy istnieje prosty sposób osiągnięcia tego, który jest zgodny z uruchamianiem moich testów w węźle?

+0

Szukam czegoś podobnego. Z jakiego rodzaju zadania korzystasz - zadania z linii poleceń? W jaki sposób otrzymujesz kompilację, która zawodzi, jeśli test jednostkowy nie powiedzie się? –

+0

Używam teraz zadania 'yarn' (jest ono na rynku rozszerzeń na VSTS), ale istnieje również zadanie' npm', które może go uruchomić. Kiedy test kończy się niepowodzeniem, powoduje to wystąpienie "błędu przyrzucania", co powoduje, że zadanie kończy się z niezerowym kodem, awaria kompilacji (powinna to być część dowolnej biblioteki asercji i biegacza testu, którego używasz). –

Odpowiedz

7

Znalazłem dobry sposób robienia tego, który nie wymaga adaptera innej firmy (np. Chutzpah). Polega na tym, aby Mocha wygenerować raport w formacie XML i skonfigurować Visual Studio Team Services, aby opublikować wyniki w dodatkowym kroku definicji kompilacji.

zainstalowałem mocha-junit-reporter (https://www.npmjs.com/package/mocha-junit-reporter) i zmienione mój skrypt testowy na następujące kwestie:

"test": "mocha ./temp/**/*.spec.js --reporter mocha-junit-reporter --require jsdom-global/register"

Potem stworzył nowy etap w mojej definicji kompilacji przy użyciu „publikowania wyników badań” zadanie. Ustawiłem format wyniku na "JUnit" i dodałem poprawną ścieżkę do wygenerowanego pliku test-results.xml utworzonego przez reportera.

Warto zauważyć, że chociaż Mocha jest dostarczany z reporterem "XUnit", wydaje się, że ten format nie działa poprawnie z VSTS, mimo że jest wymieniony jako opcja.

Wyniki npm test teraz pokazać się w zakładce „testy” obok innych badań z MSTest itp

3

Używam karmę i got to do pracy w taki sam sposób jak @ Dylan-Parry sugerowane. Niektóre EXCEPTS poniżej w przypadku pomaga innym:

package.json

"scripts": { 
    "test": "cross-env NODE_ENV=test karma start" 
    } 

karma.conf.js

const webpackCfg = require('./webpack.config')('test'); 

module.exports = function karmaConfig(config) { 

    config.set({ 
    reporters: ['mocha', 'coverage', 'junit'], 
    junitReporter: { 
     outputDir: 'coverage', 
     outputFile: 'junit-result.xml', 
     useBrowserName: false 
    } 
    }) 
... 

TFSenter image description here

Może być również warto dodać używam branch policies na moim git oddziału, aby zapobiec PR na ich połączyła jeśli testy zawiodą, informacji poprzez ten link:

https://www.visualstudio.com/en-us/docs/git/branch-policies

Oto wynik w TFS: enter image description here

Kolejnym krokiem jest zapewnienie poprawnego działania osłony!