0

我的应用程序中有一些单元测试。AI 需要跳过其中的一部分。在 pom.xml 中,我已经定义了测试是否具有特定的类 - 然后跳过它。

<profile>
  <id>skip-unit-tests</id>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.11</version>
        <configuration>
          <excludes>
            <exclude>**/*.class</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>

所以,如果我做package -Pskip-unit-tests了一切工作,但如果我这样做,clean compile -Pskip-unit-tests test那么 maven 会执行它们。最后一个命令有什么问题?

4

3 回答 3

2

该选项skipTests完成了这项工作:

mvn clean install -DskipTests

这解决了所有的测试依赖关系,编译了测试,但阻止了它们的执行。如果你也跳过他们的编译(不是一个好主意!),使用这个:

mvn clean install -Dmaven.test.skip

顺便提一句。没有选项可以避免解决测试依赖关系。以上选项在surefire插件内部实现,在deps解决后执行。

有关maven-surefire-plugin文档中跳过测试的更多信息。

于 2012-11-06T21:24:27.580 回答
0

我测试了您的个人资料,没有任何问题。

没有配置文件的正常运行:

iMac:Q13257987 maba$ mvn 包
[INFO] 正在扫描项目...
[信息]                                                                         
[信息] --------------------------------------------- -------------------------
[信息] 建筑 Q13257987-1.0-SNAPSHOT 1.0-SNAPSHOT
[信息] --------------------------------------------- -------------------------
[信息]
[信息] --- maven-resources-plugin:2.4.3:resources (default-resources) @ Q13257987 ---
[INFO] 使用 'UTF-8' 编码复制过滤的资源。
[INFO] 复制 0 个资源
[信息]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ Q13257987 ---
[INFO] 无需编译 - 所有类都是最新的
[信息]
[信息] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ Q13257987 ---
[INFO] 使用 'UTF-8' 编码复制过滤的资源。
[信息] 跳过不存在的资源目录 /Users/maba/Development/stackoverflow/java/Q13257987/src/test/resources
[信息]
[信息] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ Q13257987 ---
[INFO] 无需编译 - 所有类都是最新的
[信息]
[信息] --- maven-surefire-plugin:2.7.2:test (default-test) @ Q13257987 ---
[INFO] Surefire 报告目录:/Users/maba/Development/stackoverflow/java/Q13257987/target/surefire-reports

-------------------------------------------------- -----
 测试
-------------------------------------------------- -----
运行 com.stackoverflow.OrderTest
测试运行:1,失败:0,错误:0,跳过:0,经过时间:0.04 秒

结果 :

测试运行:1,失败:0,错误:0,跳过:0

[信息]
[信息] --- maven-jar-plugin:2.3.1:jar (default-jar) @ Q13257987 ---
[信息] --------------------------------------------- -------------------------
[信息] 构建成功
[信息] --------------------------------------------- -------------------------
[INFO] 总时间:1.655s
[INFO] 完成时间:Tue Nov 06 22:51:52 CET 2012
[INFO] 最终内存:4M/81M
[信息] --------------------------------------------- -------------------------

结果:运行了一项测试


使用配置文件运行包:

iMac:Q13257987 maba$ mvn package -Pskip-unit-tests
[INFO] 正在扫描项目...
[信息]                                                                         
[信息] --------------------------------------------- -------------------------
[信息] 建筑 Q13257987-1.0-SNAPSHOT 1.0-SNAPSHOT
[信息] --------------------------------------------- -------------------------
[信息]
[信息] --- maven-resources-plugin:2.4.3:resources (default-resources) @ Q13257987 ---
[INFO] 使用 'UTF-8' 编码复制过滤的资源。
[INFO] 复制 0 个资源
[信息]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ Q13257987 ---
[INFO] 无需编译 - 所有类都是最新的
[信息]
[信息] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ Q13257987 ---
[INFO] 使用 'UTF-8' 编码复制过滤的资源。
[信息] 跳过不存在的资源目录 /Users/maba/Development/stackoverflow/java/Q13257987/src/test/resources
[信息]
[信息] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ Q13257987 ---
[INFO] 无需编译 - 所有类都是最新的
[信息]
[信息] --- maven-surefire-plugin:2.11:test (default-test) @ Q13257987 ---
[INFO] Surefire 报告目录:/Users/maba/Development/stackoverflow/java/Q13257987/target/surefire-reports

-------------------------------------------------- -----
 测试
-------------------------------------------------- -----

结果 :

测试运行:0,失败:0,错误:0,跳过:0

[信息]
[信息] --- maven-jar-plugin:2.3.1:jar (default-jar) @ Q13257987 ---
[信息] 构建 jar:/Users/maba/Development/stackoverflow/java/Q13257987/target/Q13257987-1.0-SNAPSHOT.jar
[信息] --------------------------------------------- -------------------------
[信息] 构建成功
[信息] --------------------------------------------- -------------------------
[INFO] 总时间:1.609s
[INFO] 完成时间:Tue Nov 06 22:49:24 CET 2012
[INFO] 最终内存:4M/81M
[信息] --------------------------------------------- -------------------------

结果:未运行任何测试


使用配置文件运行干净的编译测试:

iMac:Q13257987 maba$ mvn clean compile -Pskip-unit-tests test
[INFO] 正在扫描项目...
[信息]                                                                         
[信息] --------------------------------------------- -------------------------
[信息] 建筑 Q13257987-1.0-SNAPSHOT 1.0-SNAPSHOT
[信息] --------------------------------------------- -------------------------
[信息]
[信息] --- maven-clean-plugin:2.4.1:clean (default-clean) @ Q13257987 ---
[信息] 删除 /Users/maba/Development/stackoverflow/java/Q13257987/target
[信息]
[信息] --- maven-resources-plugin:2.4.3:resources (default-resources) @ Q13257987 ---
[INFO] 使用 'UTF-8' 编码复制过滤的资源。
[INFO] 复制 0 个资源
[信息]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ Q13257987 ---
[信息] 将 1 个源文件编译到 /Users/maba/Development/stackoverflow/java/Q13257987/target/classes
[信息]
[信息] --- maven-resources-plugin:2.4.3:resources (default-resources) @ Q13257987 ---
[INFO] 使用 'UTF-8' 编码复制过滤的资源。
[INFO] 复制 0 个资源
[信息]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ Q13257987 ---
[INFO] 无需编译 - 所有类都是最新的
[信息]
[信息] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ Q13257987 ---
[INFO] 使用 'UTF-8' 编码复制过滤的资源。
[信息] 跳过不存在的资源目录 /Users/maba/Development/stackoverflow/java/Q13257987/src/test/resources
[信息]
[信息] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ Q13257987 ---
[INFO] 将 1 个源文件编译到 /Users/maba/Development/stackoverflow/java/Q13257987/target/test-classes
[信息]
[信息] --- maven-surefire-plugin:2.11:test (default-test) @ Q13257987 ---
[INFO] Surefire 报告目录:/Users/maba/Development/stackoverflow/java/Q13257987/target/surefire-reports

-------------------------------------------------- -----
 测试
-------------------------------------------------- -----

结果 :

测试运行:0,失败:0,错误:0,跳过:0

[信息] --------------------------------------------- -------------------------
[信息] 构建成功
[信息] --------------------------------------------- -------------------------
[INFO] 总时间:1.676s
[INFO] 完成时间:Tue Nov 06 22:54:44 CET 2012
[INFO] 最终内存:8M/81M
[信息] --------------------------------------------- -------------------------

结果:未运行任何测试


因此,总结您的个人资料设置工作。

也就是说,我认为您应该mvn package -DskipTests改用这是跳过所有测试的最简单方法。

另一方面,如果您只想跳过一些测试,您可以使用您的配置文件设置,但我宁愿建议您使用JUnit Categories。可以直接在maven-surefire-plugin配置中选择类别。

于 2012-11-06T22:00:07.417 回答
0

根据 maven 生命周期(参见此处),测试直到编译后才运行,而是在打包之前运行。所以我怀疑你的配置实际上并没有按照你的想法做。

于 2012-11-06T21:18:27.763 回答