【问题标题】:Invoke tests classes from another Maven project从另一个 Maven 项目调用测试类
【发布时间】:2010-11-29 15:21:32
【问题描述】:

我有 2 个 maven 项目,一个用于来源:ProjSource,包含一个类:Class-A.. 另一个:ProjTest 包含一个名为 Class-A-Test 的 A 类测试类。 我希望在 ProjSource 上调用 mvn:install 时运行我的测试类。

执行此类操作的最简单方法是什么?请注意,我的单元测试经验非常基础。我不知道如何告诉 Maven Class-A-Test 旨在测试 Class-A..

我按照描述的步骤使用 maven-jar-plugin 和 test-jar 目标 here 并定义了结果 ****** *-tests.jar 作为 ProjSource 的依赖项:

<type>test-jar</type>
<scope>test</scope>

但是当我运行 mvn:install 时,输出显示:“没有要运行的测试”。我错过了什么吗?

任何帮助都非常感谢,在此先感谢!

问候,

【问题讨论】:

    标签: java unit-testing maven-2


    【解决方案1】:
    1. 不要那样做。执行此操作的 Maven 方法是在 src/main/java 下拥有标准源,在 src/test/java 下拥有测试源。默认情况下,标准源将添加到生成的 JAR 中,而测试源目录中的测试将自动执行。这是经过充分测试的行为,为什么要改变它? 如果你想要/需要一个测试jar,在这个项目的pom.xml中调用jar:test-jar,并使用buildhelper插件到attach the resulting artifact进行部署。这样你就可以保持标准的项目布局,并且仍然有一个测试 jar。

    2. 如果你坚持这样做,你就不得不反其道而行之。测试项目必须依赖于主项目(你不能测试你不知道的东西)。我建议只将测试代码放在测试项目中的src/test/java 中,然后maven 的魔法可以以默认方式工作。 也可以从上方插入粗体文本。

    但是如此定义 Maven 生命周期的原因是失败的测试应该会导致构建失败。构建一个不做它应该做的事情的库是没有意义的。

    【讨论】:

    • 谢谢弗洛伊德,我尝试了你的建议,但不幸的是没有奏效。现在我正试图找到一种方法告诉 Maven 我的测试类被打包在一个 JAR 文件中,然后去在执行“测试阶段”时搜索那个 jar。 接近我所寻求的,但是这个标签只接受一个文件夹作为源,而不是一个 JAR .. 请注意,这些是我公司的要求,所有测试都打包在一个 Jar 中(在开始使用 maven 之前完成...)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 2020-12-14
    • 2019-03-05
    • 2015-12-27
    相关资源
    最近更新 更多