我有以下代码:
测试类别:
@Tag("foo")
class SomeIT
{
@Test
public void testSomeStuff()
{
...
}
}
套件类别:
@RunWith(JUnitPlatform.class)
@IncludeTags({"foo"})
//@SelectPackages("org.foo")
public class SomeITSuite
{
}
Mypom.xml
:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.foo</groupId>
<artifactId>bar</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<version.slf4j>1.7.30</version.slf4j>
<version.junit>5.7.0</version.junit>
<version.junit.platform.runner>1.7.0</version.junit.platform.runner>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
</plugins>
</build>
<dependencies>
<!-- for testing -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${version.junit}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>${version.junit.platform.runner}</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>integration-tests</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<includes>
<include>**/*ITSuite.java</include>
</includes>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<phase>integration-test</phase>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<phase>verify</phase>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
这将在Idea和控制台中执行带有0个测试的套件(使用mvn净安装-PIntegration-test
)。
如果我恢复注释掉的@SelectPackages("org.foo")
,它将运行所有测试,无论它们是否被标记。我这里缺少什么?这是一个错误吗?
显然,当JUnit扫描类时,它不会将以IT
结尾的类识别为集成测试。我不得不将它们重命名为*ITTest
,然后事情开始工作。
如果有人对更多细节感兴趣,您可以查看这个pull请求。
问题内容: 我有一个测试套件,其结构如下 在以上结构中,我想执行testmethod4()作为最后一个。即)最后执行。有一个@FixMethodOrder注释,它按顺序执行方法而不是testclass。是否有任何机制可以同时维护测试类和测试方法中的顺序。使用@FixMethodOrder,我可以通过重命名测试方法的名称来执行该方法,但是我不能指示junit将测试类作为最后一个(最后一个)执行。 问
这是我当前的maven-surefire-plugin配置:
我需要测试验证注释,但看起来它们不起作用。我不确定JUnit是否也是正确的。目前,测试将通过,但您可以看到指定的电子邮件地址是错误的。 JUnit 待测试类别
并添加注释 我得到一条消息:没有测试找到test runner JUnit5,并且在Problems选项卡中有SpringBootTest.jar无法读取或者不是有效的ZIP文件 也试过 我也试过: 如果我将字符串myUrl硬编码为“http://localhost:8090”,则测试工作正常,因此问题在于@value不工作
我们打算将基于JUnit4的项目升级到JUnit5。我按照JUnit5官方网站的说明修改了JUnit4套件:https://JUnit . org/JUnit 5/docs/current/user-guide/# running-tests-JUnit-platform-runner-test-suite。在命令行中使用mvn test时没有执行测试:< code > mvn test-Dtes