Co robię? Obecnie pracuję nad skonfigurowaniem ciągłego procesu integracji/dostarczania dla aplikacji frontowych. Planujemy użyć SonarQube jako narzędzia jakości kodu i chcemy zaimportować wyniki testu junitowego/pokrycia kodu w SONAR do dalszej analizy.importowanie javascript xml junit testy do SONAR przy użyciu polecenia jstestdriver nie powiodło się
Udało mi się pomyślnie zaimportować raport o zasięgu kodu javascript do SONAR. Używamy Gulp/Karma/PhantomJS/Jasmine itp. I korzystamy z reportaży Pokarm/Junit do generowania wyników testów. Nazwa pliku testowego Junit to TEST-xunit.xml.
Gdzie utknąłem? Potrzebuję twojej pomocy/wskazówek ekspertów dotyczących importowania wyników testów JavaScript do SONAR. Próbowałem różnych rzeczy, ale w jakiś sposób nie mogłem zaimportować źródeł testów jednostkowych do SONAR.
Co wszystko, czego próbowałem? Wcześniej używaliśmy SONAR Runner 2.3, SONAR Qube 4.5/Javascript plugin 2.2 i mogliśmy importować statystyki wysokiego poziomu Junit, takie jak testy zdane/nieudane itd. Jednak nie byliśmy w stanie przejść do poszczególnych testów, aby zobaczyć, który test został zaliczony/nieudany .
Po dalszych badaniach zauważyliśmy, że wtyczka Javascript 2.3 dodaje więcej komunikatów do scenariusza, jeśli nie znajdzie źródeł testowych. Były też inne zależności, dzięki którym SONAR qube został zaktualizowany do wersji 5.0. Przetestowano z programem SONAR runner 2.4 i obserwowano następujące komunikaty. Obecnie statystyki wysokiego poziomu również nie są importowane.
JSTestDriverSensor.java kod jest od SONAR Javascript plugin na github)
LOG.warn("Test result will not be saved for test class \"{}\", because SonarQube associated resource has not been found using file name: \"{}\"",
getUnitTestClassName(classKey), getUnitTestFileName(classKey));
sonar-runner.properties wygenerowane przez wtyczkę SONAR haustem (używa SONAR Runner 2.3)
sonar.projectBaseDir=C:/xxxxx/homepage2
sonar.host.url=http://xxxxx:9000/sonarqube/
sonar.jdbc.url=jdbc:mysql:// xxxxx:3306/sonar
sonar.jdbc.username= xxxxx
sonar.jdbc.password= xxxxx
sonar.projectKey=homepage:0.0.0
sonar.projectName=homepage
sonar.projectVersion=0.0.0
sonar.sources=src/app,src/components
sonar.exclusions=src/**/*spec.js
sonar.tests=test
sonar.language=js
sonar.sourceEncoding=UTF-8
sonar.javascript.lcov.reportPath=reports/coverage/lcov.info
sonar.javascript.jstestdriver.reportsPath=reports/unit
Próbowałem nawet osobnej instalacji SONAR 2.4, ale nadal otrzymuję te same komunikaty o błędach.
Pytanie? 1. Musi być coś, co przeoczam i jakoś nie jestem w stanie określić, co może być przyczyną tego. Myślę, że albo ustawiam błędnie ścieżkę katalogu testowego, albo JSTestDriverSensor źle interpretuje plik katalogu testowego. Propozycje? 2. Na początek chcę zaimportować przykładowy plik junit xml, aby sprawdzić, czy zostanie pomyślnie zaimportowany. Potem mogę zmodyfikować wyjście generatora karma junit, aby dopasować wejście junit xml. Potrzebujesz tutaj przykładów referencyjnych.
Dołączanie niektórych dzienników. Zmodyfikowałem junit xml, aby ustawić różne nazwy klas, aby sprawdzić, czy JsTestDriverSensor je znajdzie. Ale nie jest!
[23:31:24] 23:31:24.122 DEBUG - Language of file 'src/app/main/textOverride.controller.js' is detected to be 'js'
23:31:24.122 DEBUG - Language of file 'src/app/main/main.routes.js' is detected to be 'js'
23:31:24.123 DEBUG - Language of file 'test/app/main/testSpec.js' is detected to be 'js'
[23:31:24] 23:31:24.138 DEBUG - Language of file 'src/components/navbar/navbar.controller.js' is detected to be 'js'
[23:31:24] 23:31:24.169 INFO - 7 files indexed
[23:31:26] 23:31:26.632 INFO - Quality profile for js: Sonar way
[23:31:26] 23:31:26.670 DEBUG - Sensors : QProfileSensor -> JavaScriptSquidSensor -> JsTestDriverSensor -> CoverageSensor -> InitialOpenIssuesSensor -> ProjectLinksSensor -> VersionEventsSensor -> FileHashSensor -> SCM Sensor (wrapped) -> CPD Sensor (wrapped)
23:31:26.671 INFO - Sensor QProfileSensor...
[23:31:26] 23:31:26.680 INFO - Sensor QProfileSensor done: 9 ms
23:31:26.680 INFO - Sensor JavaScriptSquidSensor...
[23:31:26] 23:31:26.950 INFO - 6 source files to be analyzed
[23:31:27] 23:31:27.081 INFO - 6/6 source files analyzed
[23:31:27] 23:31:27.113 INFO - Sensor JavaScriptSquidSensor done: 433 ms
[23:31:27] 23:31:27.114 INFO - Sensor JsTestDriverSensor...
23:31:27.114 INFO - Parsing Unit Test run results in Surefire format from folder C:\xxxxx\homepage2\reports\unit
[23:31:27] 23:31:27.176 WARN - Test result will not be saved for test class "app.main.testSpec", because SonarQube associated resource has not been found using file name: "app/main/testSpec.js"
[23:31:27] 23:31:27.177 WARN - Test result will not be saved for test class "src.app.main.testSpec", because SonarQube associated resource has not been found using file name: "src/app/main/testSpec.js"
Gdzie znajdują się pliki testowe? Czy są obecne tam, gdzie sonar szuka, np. App/main/testSpec.js? –
Tak, jest obecny w aplikacji/main/testSpec.js ... – Sunil
Mam podobny problem i odkryłem, że wtyczka nie znajduje odpowiednich zasobów testowych, gdy nie znajdują się w katalogu głównym lokalizacji testowej i Analiza jest uruchamiana w systemie Windows. Czy korzystasz również z systemu Windows? – ioscode