Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven failsafe插件不会运行带有JUnit类别注释的测试类_Maven_Junit_Maven Failsafe Plugin - Fatal编程技术网

Maven failsafe插件不会运行带有JUnit类别注释的测试类

Maven failsafe插件不会运行带有JUnit类别注释的测试类,maven,junit,maven-failsafe-plugin,Maven,Junit,Maven Failsafe Plugin,我有这样一个界面: public interface IntegrationTest { } <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.14</version> <configuration&g

我有这样一个界面:

public interface IntegrationTest {
}
 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.14</version>
    <configuration>
        <groups>acme.test.IntegrationTest</groups>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
            </goals>
        </execution>
    </executions>
</plugin>
我像这样配置故障保护插件:

public interface IntegrationTest {
}
 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.14</version>
    <configuration>
        <groups>acme.test.IntegrationTest</groups>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
            </goals>
        </execution>
    </executions>
</plugin>
此测试将不运行

但是,如果我根据

像这样:

@Category(IntegrationTest.class)
public class ExampleClassIT {

@Test
public void slow_and_painful_test() {

测试运行良好。为什么在使用groups标记时必须命名测试并添加注释?我错过什么了吗?on using JUnit声明您可以在类级别使用类别注释。

您应该将JUnit添加为已完成的依赖项(>4.8),或者特别是将以下内容添加到故障保护插件配置中:

<plugins>
[...]
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.14.1</version>
    <dependencies>
      <dependency>
        <groupId>org.apache.maven.surefire</groupId>
        <artifactId>surefire-junit47</artifactId>
        <version>2.14.1</version>
      </dependency>
    </dependencies>
  </plugin>
[...]
</plugins>

[...]
org.apache.maven.plugins
maven故障保护插件
2.14.1
org.apache.maven.surefire
surefire-junit47
2.14.1
[...]

但我认为它不会改变这种情况。

这是因为这些是默认的java类,在执行时,fail-safe插件包括这些类。 但是,您可以在pom中使用以下标签克服此问题: 例如


**/*.爪哇

包含所有java文件。

区分单元测试和集成测试只是基于命名约定,因此不需要在JUnit中使用组(除了不是集成测试的最佳选择)。@khmarbaise我不同意,类别是一种很好的方法,可以在不受命名约定限制的情况下组织使用测试。这就是为什么JUnit添加了它们,以及为什么各种Maven插件都支持它们。您是否尝试过排除该类别?你需要两者还是完全忽略了这个类别?你的项目中包含了什么版本的JUnit?这与这个问题类似,但插件版本不同:我已经有了JUnit4.10作为依赖项。您是正确的,更改版本并添加surefire-junit47依赖项并没有解决问题。
<includes>
<include>**/*.java</include>
</includes>