将Maven依赖声明为仅测试运行时

特雷弗·罗宾逊(Trevor Robinson):

将Maven依赖项声明为仅用于测试运行时(而不是测试编译)类路径的最佳方法是什么?

具体来说,我希望slf4j-api(日志记录外观)作为典型的编译范围依赖项,但我仅希望slf4j-simple(适用于单元测试的准系统实现)仅在测试运行时类路径上(测试编译不需要)。我一直在这样做:

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <scope>test</scope>
</dependency>

但是,这样做的缺点是dependency:analyze报告slf4j-simple未使用,可能是因为编译不需要它:

[WARNING] Unused declared dependencies found:
[WARNING]    org.slf4j:slf4j-simple:jar:1.7.7:test

我不能使用runtime依赖关系,因为我不希望该依赖关系可继承地继承(例如,下游依赖关系可以使用log4j等)。我尝试runtime使用optional=true,但结果相同。

(请注意,我也可以ignoreNonCompile为依赖插件设置,但这似乎是一个非常钝的工具,会隐藏其他潜在的问题。)

乔:

在这里,没有任何功能可以完全满足您的需求。test是最好的选择。

test-runtime之前已经要求一个范围(Re:是否需要测试运行时范围?),建议的解决方法就是ignoreNonCompile您已经发现配置。

dependency:analyze已经有一些限制(“未检测到某些情况(常量,具有仅源保留的注释,javadoc中的链接)”)。您可能必须接受test警告的所有-scope依赖项都是误报。

(您可以将测试的定义拆分为一个单独的模块,该模块将没有slf4j实现依赖项,然后在另一个模块中运行它们。我认为这样做不值得。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

作为Maven测试运行时,TestNG测试失败,但作为TestNG套件运行时,则通过

在将应用程序作为TestNG测试运行时破坏测试用例

如何通过Mocha测试运行时参数?

通过Jest获取测试运行时间

具有预期异常的测试将产生以下错误:“测试运行时,代理进程已停止。”

当我取消单元测试运行时,当前运行的测试是否完成?

我可以在测试运行时跳过JUnit测试吗?

使用SBT测试运行时Spark测试失败

如何在测试运行时类型检查期间模拟 Python 类?

bazel-测试运行时的可写归档路径

在 Selenium 中将类作为 TestNG 测试运行时出现 java.lang.StackOverflowError

dotnet test命令显示单个测试运行时间?

测试运行时未调用C#中的nUnit SetupFixture类

从测试运行时,getResourceAsStream(“ file”)在哪里搜索?

Junit4在测试运行时引发异常

在硒测试运行时,HTTP URL重定向为HTTPS

cypress 测试运行时无法加载地图和 css 的图块

MAVEN:使用Maven测试运行多个Maven项目

Angular 2+服务测试。服务导入在ng测试运行时未定义

如何使用在测试运行时确定的类来创建特定GUI类的测试对象?

是否可以仅将ReSharper用作测试运行器?

通过 spring boot 测试运行时,控制器中未发生 Bean 注入

作为插件测试运行时,不同项目中重复的软件包名称会导致InvalidAccessException

如何使我的Maven集成测试运行

将QuickTests作为LoadRunner测试运行

将python测试运行信息导入sonarqube

如何将脚本作为pytest测试运行

进行手动测试运行时,TFS Test Runner每个会话最多只能进行100个测试。如何增加呢?

测试运行null和字母?