Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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 是否可以使用跳过方法将故障保护和surefire运行彼此隔离?_Maven_Maven Surefire Plugin_Maven Failsafe Plugin - Fatal编程技术网

Maven 是否可以使用跳过方法将故障保护和surefire运行彼此隔离?

Maven 是否可以使用跳过方法将故障保护和surefire运行彼此隔离?,maven,maven-surefire-plugin,maven-failsafe-plugin,Maven,Maven Surefire Plugin,Maven Failsafe Plugin,如果与-Dit.test=full.Classname一起使用,则maven在命令行上重写时会忽略属性skipITs的值。指定的故障保护测试将不会运行(情况一) 与此相反,不使用it的skippits。test开关会导致运行现有的故障保护测试(情况二) 背景:我试图通过运行两种类型的surefire测试或仅运行其中一种来将surefire测试与故障保护测试隔离开来。maven调用是: mvn -Pintegration -DskipTests=true -DskipITs=false -Dit.

如果与
-Dit.test=full.Classname
一起使用,则maven在命令行上重写时会忽略属性
skipITs
的值。指定的故障保护测试将不会运行(情况一)

与此相反,不使用
it的
skippits
。test
开关会导致运行现有的故障保护测试(情况二)

背景:我试图通过运行两种类型的surefire测试或仅运行其中一种来将surefire测试与故障保护测试隔离开来。maven调用是:

mvn -Pintegration -DskipTests=true -DskipITs=false -Dit.test=full.Classname verify
在第一种情况下,以及:

mvn -Pintegration -DskipTests=true -DskipITs=false verify
在第二个

相关配置(pom.xml,仅限片段)为:


假的
假的
(这些都是违约)以及


整合
maven故障保护插件
习俗
集成测试
验证
${skippits}
${skippits}

您是否也观察到了这一点,或者最终找到了更好的工作方法?

默认情况下,Surefire插件在测试阶段运行,通常您会将故障保护插件配置为在集成测试和验证阶段运行,如下所示:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.18.1</version>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
        <skip>${skip.surefire}</skip>
    </configuration>
</plugin>
要运行Surefire和故障保护测试,请使用

mvn clean verify
您可以使用
配置选项完全跳过任何插件。如果您像这样配置Surefire插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.18.1</version>
    <executions>
        <execution>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
        <skip>${skip.surefire}</skip>
    </configuration>
</plugin>
如果集成测试(
it.test
)具有非默认名称,我需要相应地添加一个
include
模式,如(pom.xml snippet):


数据库单元
maven故障保护插件
习俗
集成测试
验证
${skippits}
${skippits}
**/*DbTest.java

但这似乎只对最初的方法有效。还要注意,如果您在集成测试中遵循了不同的命名方案,那么可能还需要添加默认的包含模式。

为什么不使用插件提供的默认模式呢
-DskipITs=true
跳过maven failsafe插件的集成测试,
-DskipTests=true
跳过maven surefire插件的单元测试。为什么要定义属性?@khmarbaise
-DskipTests=true
也会阻止故障保护插件执行任何测试。OP希望跳过Surefire,但运行Failsafe。您应该使用命名约定,这已经是maven Surefire/maven Failsafe中的默认约定,而不是使用includes等。maven完全是约定优先于配置@khmarbaise是对的,不要因为不遵守惯例而使你的生活艰难!此外,Stackoverflow不像传统的讨论板那样工作。有一个问题,其他所有问题都应该是这个问题的答案。讨论可以在聊天室中进行。
<profiles>
    <profile>
        <id>dbUnit</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>custom</id>
                            <goals>
                                <goal>integration-test</goal>
                                <goal>verify</goal>
                            </goals>
                            <configuration>
                                <skipTests>${skipITs}</skipTests>
                                <skip>${skipITs}</skip>
                                <includes>
                                    <include>**/*DbTest.java</include>
                                </includes>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>