有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Maven中运行JUnit测试,无需构建和复制文件

我有一个大型Maven项目,其中有几个模块。当我想从一个模块运行JUnit测试时,我会在包含所有模块的目录中运行“mvn-Dtest=NameOfTest test”。当我运行这个命令时,Maven遍历每个模块并尝试编译它(尽管它已经编译),这涉及到复制一堆文件并增加测试的总时间。Maven surefire插件的“test”命令似乎执行了测试的所有步骤。我想知道是否有一种方法可以只执行测试步骤,而不用担心所有试图编译和复制的文件

以下是测试开始前的一些输出:

[INFO] 
[INFO] --- build-helper-maven-plugin:1.5:add-test-source (add-test-source) @ module1 ---
[INFO] Test Source directory: <directory in module1 with some generated sources> added.
[INFO] 
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ module1 ---
[debug] execute contextualize
[INFO] Copying 108 resources
[INFO] Copying 1113 resources
[INFO] Copying 1 resource
[INFO]

它会对其他每个模块重复此操作。总的来说,它需要一两分钟才能真正开始测试。有没有人知道一种不用预先编译就能运行测试的方法?请让我知道,如果有任何更多的信息,我应该提供


共 (3) 个答案

  1. # 1 楼答案

    如果您希望只运行生命周期的测试阶段,而不运行之前的所有阶段,那么您也可以将绑定到测试阶段的目标称为:

    mvn surefire:test
    

    或者如果你只想运行一个测试

    mvn -Dtest=NameOfTest surefire:test
    
  2. # 2 楼答案

    简单地从测试所在的模块中运行测试有什么问题?这样,Maven就不会尝试构建您不感兴趣的其他模块

  3. # 3 楼答案

    如果您只想跳过cmd行中的测试编译,请使用-Dmaven.test.skip=true

    我还应该指出,虽然maven.test.skip不会编译任何测试,但它会执行进入<testOutputDirectory>的任何编译测试

    根据maven resources插件中^{}的文档,应该使用上面的maven.test.skip参数跳过测试资源的复制

    Set this to 'true' to bypass copying of test resources. Its use is NOT RECOMMENDED, but quite convenient on occasion. User property is: maven.test.skip.