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