【发布时间】:2019-09-14 05:56:09
【问题描述】:
我的 Spring Boot 应用程序还启动了 gRPC 服务及其 REST (HTTP) 服务。我已经为 gRPC 和 REST 编写了特定的测试。但是,当我运行 gradle test 时,这些测试是按顺序运行的;它们没有理由不能并行运行。
我在这里拍摄的是我的 Spring Boot 应用程序在并行执行测试时运行的单个实例。
我已尝试在我的 gradle 文件中设置 test 部分,使其具有“forkCount”,我还尝试设置诸如 parallel="classes" 之类的选项,但这会产生有关“ parallel' 是一个未知属性(也许是 junit 5 的东西?)
test {
options {
parallel = "classes"
// forkCount = 2
}
}
forkCount 选项不是我想要的,因为它会启动 spring 应用程序的多个实例。
我还尝试从测试类中删除 @RunWith 并制作一个单独的测试类(具有 @RuWith 注释),其中包含以下方法它
@Test
void testRunner() {
JUnitCore.runClasses(ParallelComputer.classes(), {GrpcTests.class, RestTests.class});
}
但测试似乎仍按顺序运行。
我也尝试了其他一些方法,抱歉我手头没有。
目标
理想情况下,我希望在测试类并行运行的同时运行我的 Spring Boot 应用程序的单个实例(如果我可以让这些方法也并行运行,那就太棒了)
- Java 版本:“1.8.0_171”
- Spring Boot 版本:2.0.4.RELEASE
根据我尝试添加的建议
@Test
public void contextLoads() throws Exception {
}
并在 gradle 文件中添加 'maxParallelForks' 条目,我已经使用了 @SpringBootTest 注释,但这与我使用 'forkCount` 至少有 2 个实例已启动,从测试关闭日志中可以看出
2019-04-25 10:24:17.245 LogLevel=INFO 53838 --- shutting down gRPC server since JVM is shutting down
...
2019-04-25 10:24:30.125 LogLevel=INFO 53839 --- shutting down gRPC server since JVM is shutting down
您可以看到我收到两条关闭消息并显示 PID(53838 和 53839)。
【问题讨论】:
标签: spring spring-boot junit