Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Java 需要帮助的是使用maven概要文件排除包含junits的包_Java_Maven_Junit - Fatal编程技术网

Java 需要帮助的是使用maven概要文件排除包含junits的包

Java 需要帮助的是使用maven概要文件排除包含junits的包,java,maven,junit,Java,Maven,Junit,我有一个场景,需要在编译期间排除模块中的某些测试。为此,我在该模块的pom.xml中创建了一个概要文件,如下所示 <profiles> <profile> <id>excludeTests</id> <activation> <property> <name>excludeTes

我有一个场景,需要在编译期间排除模块中的某些测试。为此,我在该模块的pom.xml中创建了一个概要文件,如下所示

<profiles>
        <profile>
            <id>excludeTests</id>
            <activation>
                <property>
                    <name>excludeTests</name>
                    <value>true</value>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.19.1</version>
                        <configuration>
                            <excludes>
                                <exclude>com/abc/def/MyPackage</exclude>
                            </excludes>

                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

“MyPackage”下的junit类仍在执行中。我的个人资料真的被选中了吗。请在这里帮助我在构建时将Junit从这个包中排除。

在Maven中执行此操作的通常方法是通过配置文件,但是如果您不想接触
pom.xml
,您可以创建
@规则(在Junit 4中)来跳过基于您在命令行中设置的某些属性或作为环境变量(对CI有用)的测试

下面是一个例子:

public class SkippableTestRule implements TestRule {

   private final boolean SKIP_TESTS = System.getProperty( "skipSelectedTests", false );

   @Override
   public Statement apply(Statement base, Description description) {
        if ( SKIP_TESTS && skippablePackage()) {
            return new SkipTest();
        }
        return base;
    }

    private static class SkipTest extends Statement {

        private SkipTest() {
        }

        @Override
        public void evaluate() throws Throwable {
            Assume.assumeTrue( "Skipping test", false );
        }
    }
}
现在您已经定义了此规则,可以通过以下方式将其应用于测试类:

class MyTests {

    @Rule
    public SkippableTestRule rule = new SkSkippableTestRule();
}
现在,在使用以下内容运行生成时,将忽略类中的所有测试:

mvn -DargLine="-DskipSelectedTests=true"
如果这还不够好。这将使您能够更好地控制运行哪个测试类

对于JUnit5,您可以

或者,您可以在以下位置以不同的方式配置测试:


org.apache.maven.plugins
更多细节

配置文件将如下所示:


默认配置文件
真的
org.apache.maven.plugins
maven surefire插件
2.12.4
排除测试
org.apache.maven.plugins
maven surefire插件
2.12.4
**/极致/包装
...
然后,您可以使用以下命令运行特定配置文件:

mvn test -P exclude-tests

为什么不参加考试?他们不工作吗?如果是这样的话,您应该删除它们,因为它们没有价值……此外,根据JUnit的不同,您可以使用
@Ignore
对它们进行注释……它们可以工作。没有问题。正如我提到的,我只需要检查代码库的运行状况。我想忽略的测试用例不是由我们的团队管理的。我只需要检查我的代码和它的测试用例。那么,如果你想检查代码的运行状况,为什么要跳过测试呢?听起来有点矛盾?我正在寻找一种不接触pom文件的方法。我们可以给mvn命令传递一些参数来忽略一些测试吗?这是maven在命令行中能做的最好的事情(据我所知):使用JUnit4规则或JUnit5扩展可能可以获得相同的结果。我更新了我的asnwer。我用一些想法更新了我的答案。更新了我的问题
mvn test -P exclude-tests