2013-12-19 77 views
11

我正在使用Maven构建我的项目。我目前正在测试分成不同的层次:使用Maven surefire插件包含测试

  • 单元测试 - >src/test/java/**/*Test.java
  • 集成测试 - >src/test-integration/java/**/*Test.java
  • 外部测试 - >src/test-external/java/**/*Test.java

这里是我的maven-surefire-plugin部分:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>${maven-surefire-plugin.version}</version> 
    <configuration> 
     <includes> 
      <include>src/test/java/**/*Test.java</include> 
     </includes> 
    </configuration> 
</plugin> 

上面的指令不起作用。我运行时没有执行任何测试:mvn clean test

我试过**/*Test.java,它运行所有测试 - 单元,集成和外部。但是,对于默认测试套件,我只想运行单元测试。

我该如何在Maven中完成这项工作?

编号:

<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-surefire-plugin</artifactId> 
<version>2.14.1</version> 

回答

1

难道是更容易使用的排除,而不是列入?

<excludes> 
    <exclude>test-integration/**/*</exclude> 
    <exclude>test-external/**/*</exclude> 
</excludes> 

或者类似的东西?

8

你应该分开你的单元和集成测试用例。单元测试可以使用Surefire插件运行,并且有一个名为Failsafe的独立插件用于运行集成测试。

Surefire插件默认运行所有名称以*Test.java结尾的测试文件。诀窍是使用不同的名称命名集成测试文件,例如*IT.java。 Failsafe插件会将它们识别为集成测试。

你可以找到这个答案样例用法 - How do I get my Maven Integration tests to run

而且你不必单独配置Surefire插件,如果你按照默认的设置就像把你的测试用例文件src/test/java文件夹并命名您的测试文件作为*Test.java

5

这是因为<include>路径相对于<testSourceDirectory>,默认为${project.build.testSourceDirectory} = src/test/java。试试这个

<include>**/*Test.java</include> 
+0

这应该是接受的答案 – Andrejs

相关问题