2016-05-06 17 views
0

Ich bin auf einem Sonarqube Plugin arbeiten und möchte einige Tests hinzufügen, dass Integrationstest gegen laufenden Servern.Programatically startet Sonarqube Läufer für Integrationstests Plugins

ich starten die Server in Docker-Container, und möchte dann Sonar-Analyse gegen sie aus JUnit-Tests durchführen.

Das sieht möglich sein org.sonarsource.scanner.api.EmbeddedScanner verwenden, aber es könnte einen besseren Weg geben.

Ein Nachteil der Verwendung von EmbeddedScanner wäre, dass ich nur statische Dateien auf der Festplatte analysieren würde.

Gibt es einen besseren Ansatz?

Antwort

1

Sie können Ihren Analysator testen, indem Sie String an ihn übergeben. Aber sobald Sie über Integrationstests sprechen, müssen Sie tatsächlich mit physischen Dateien arbeiten.

Sie können einen Blick auf, wie wir „Medium-Test“ für den Scanner Teil schreiben: https://github.com/SonarSource/sonarqube/tree/5.5/sonar-scanner-engine/src/test/java/org/sonar/batch/mediumtest

Beachten Sie, dass diese BatchMediumTester Utility-Klasse nicht eine API und ist nicht garantiert werden rückwärtskompatibel in zukünftigen Versionen. Sie können also keine "mittleren Tests" schreiben und sie gegen verschiedene Versionen von SonarQube ausführen.

Um Integrationstests auszuführen, führen wir die SonarQube-Analyse mit dem SonarQube-Scanner "wie ein echter Benutzer" aus. Wir haben ein Tool namens Orchestrator, mit dem Sie eine bestimmte Version des SonarQube-Servers starten, Plugins installieren, Qualitätsprofile erstellen und anschließend eine Analyse ausführen können. Siehe zum Beispiel: https://github.com/SonarSource/sonar-scm-svn/blob/master/its/src/test/java/com/sonarsource/it/scm/SvnTest.java