【发布时间】:2020-04-17 07:52:51
【问题描述】:
- 假设我有一个工作代码库。此时从 Intellij idea 运行
mvn install工作正常 - 假设我通过将
assertTrue(false)添加到其中一项测试中来破坏我的一项测试 - 现在我运行
maven install,它输出Results: Tests run: 3, Failures: 0, Errors: 0, Skipped: 0,然后说BUILD SUCCESS! - 但是,如果我再次运行
maven install,我会得到输出[ERROR] Tests run: 3, Failures: 1, Errors: 0, Skipped: 0
反过来也一样。因此,如果我现在从我的一项测试中删除 assertTrue(false),执行 mvn install 仍然会触发错误,指出测试失败,但如果我再次运行它,它就会成功。
这不是真正的正常行为还是我做错了什么?我对 Maven 和 JUnit 没有太多经验。
我的工作流程一直是只运行一次 maven install 并将其安装在本地,以便我的其他项目可以将其作为依赖项,并且我会在目标文件夹中获得一个输出并最小化的 jar。
我刚刚添加了 JUnit Jupiter 和 Surefire。这是我的pom.xml:https://gist.github.com/VapidLinus/63103122483cb53ee9a534c229fbd72f
编辑:如果我在 测试 中更改某些内容,这似乎只是个问题。如果我破坏了测试的实际实现,mvn install 会在第一次运行时检测到问题。
【问题讨论】:
-
在 intellij idea 中运行
mvn install而不是运行mvn clean install并检查。如果在命令提示符下运行会更好。 -
根据发布的要点,我发现您的 pom 文件存在几个问题:将插件作为依赖项是完全错误的。在 maven-surefire 中使用包含违反了配置范例的约定(遵循命名约定:
*Test.java用于单元测试..)。要使用 JUnit Jupiter,您必须添加 junit-jupiter-engine 依赖项而不是 JUnit Jupiter ...您还应该升级 maven-compiler-plugin 这可能会导致您描述的问题... -
感谢@khmarbaise 的建议!我对 Maven 还是新手,所以还有很多我不知道或不了解的地方。不确定将插件作为依赖项错误是什么意思,您的意思是我的另一个 Spigot 插件?除非我有一个包含,否则我无法让 Maven 运行我的测试,但我现在将其更改为
<include>**/*Test.java</include>,而不是它也可以工作。从我阅读的指南/教程中,他们只添加了 JUnit Jupiter 作为依赖项,并且它似乎有效 - 这样做有什么问题?我会更新我的 maven 编译器插件 :) 再次感谢,一直在努力学习和改进 -
我的意思是你的依赖区域中有 maven-surefire-plugin。此外,使用分类器
sources或javadoc的依赖项没有意义......因为它们不能在类路径上使用...... -
@VapidLinus,您是否尝试过@Deb 提出的建议?这样就可以清楚的知道是Idea,还是Maven相关的问题。
标签: java maven intellij-idea junit maven-surefire-plugin