我正在开发一个 SonarQube 插件,并希望添加一些针对正在运行的服务器进行集成测试的测试。
我正在 docker 容器中启动服务器,然后想在 JUnit 测试中对它们执行声纳分析。
这看起来可以使用org.sonarsource.scanner.api.EmbeddedScanner
,但可能有更好的方法。
使用 EmbeddedScanner 的一个缺点是我只能分析磁盘上的静态文件。
有更好的方法吗?
我正在开发一个 SonarQube 插件,并希望添加一些针对正在运行的服务器进行集成测试的测试。
我正在 docker 容器中启动服务器,然后想在 JUnit 测试中对它们执行声纳分析。
这看起来可以使用org.sonarsource.scanner.api.EmbeddedScanner
,但可能有更好的方法。
使用 EmbeddedScanner 的一个缺点是我只能分析磁盘上的静态文件。
有更好的方法吗?
您可以(应该)通过将 String 传递给分析器来对分析器进行单元测试。但是一旦您谈论集成测试,那么您确实必须使用物理文件。
您可以看看我们如何为扫描仪部分编写“中等测试”: https ://github.com/SonarSource/sonarqube/tree/5.5/sonar-scanner-engine/src/test/java/org/sonar/批次/中试
请注意,此 BatchMediumTester 实用程序类不是 API,并且不保证在将来的版本中向后兼容。因此,您不能编写“中等测试”并针对不同版本的 SonarQube 运行它们。
为了运行集成测试,我们使用 SonarQube Scanner “像真实用户一样”运行 SonarQube 分析。我们有一个名为 Orchestrator 的工具,它能够启动给定版本的 SonarQube 服务器、安装插件、填充质量配置文件,然后运行分析。参见例如: https ://github.com/SonarSource/sonar-scm-svn/blob/master/its/src/test/java/com/sonarsource/it/scm/SvnTest.java