【发布时间】:2021-06-01 12:40:48
【问题描述】:
我正在开发一个使用 Java 8、Spring Boot 2.4.0 的多模块 maven 项目。我想测试一个调用 3rd 方服务的模块。我正在使用wiremock 来模拟第3 方服务调用,并创建了一个spring boot 集成测试类。我的课程与我的 XYZService 课程在同一个包中。我的测试在 src/test/... 中,看起来像这样。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringApplicationClassWithMainMethod.class)
public class XYZServiceIntegrationTest {
@Rule
public WireMockRule externalService = new WireMockRule();
@Test
public void test1() {...}
@Test
public void test2() {...}
}
当我在 Eclipse 中运行 maven 构建时(干净 + 安装)。我的构建没有检测到集成测试所在的 maven-module 中存在的测试。同一模块中的其他单元测试也没有被检测到(注意:在添加集成测试类之前,单元测试正在工作)。 Maven 说测试运行:0。当我右键单击文件并作为 JUnit 测试(Junit 4)运行时,集成测试工作正常。此外,我需要设置一些环境变量来运行我在该集成测试类的配置中设置的 SpringApplicationClassWithMainMethod.class,以便成功加载应用程序上下文(我尝试通过代码加载环境变量和其他堆栈溢出帖子没有任何效果)。通知我的 maven 的另一件事仅使用 Maven surefire 插件来运行测试。我不知道我们是否需要为我的目的使用 Maven 故障安全插件(当我在测试类的顶部添加 2 个注释时,我的测试是否被视为集成测试?)。有人可以帮助我就如何构建父项目提出任何建议。
【问题讨论】:
-
你使用哪个 Spring Boot 版本?
-
我使用的是 Spring boot 2.4.0
-
那么你应该使用 JUnit Jupiter (aka JUnit 5) 而不是 JUnit 4 否则你需要添加 junit-vintage-engine 来运行你的 JUnit 4 测试..
-
我正在使用 JUnit4 作为电源 Mockito 目前仅支持 JUnit4。此外,在我运行 maven clean & maven install 之前,我的 JUnit4 测试运行正常。只有在我添加了上面的 XYZServiceIntegrationTest 类之后,在 Maven 构建(干净 + 安装)期间没有运行任何测试。
-
您可以添加
<build>的pom.xml部分吗?
标签: java spring-boot maven spring-boot-test wiremock