Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
同时运行Spring测试用例,而不是按顺序运行_Spring_Spring Boot_Junit - Fatal编程技术网

同时运行Spring测试用例,而不是按顺序运行

同时运行Spring测试用例,而不是按顺序运行,spring,spring-boot,junit,Spring,Spring Boot,Junit,我的Spring Boot应用程序还启动gRPC服务及其REST(HTTP)服务。我已经为gRPC和REST编写了具体的测试。但是,当我运行gradle测试时,这些测试是按顺序运行的;它们没有理由不能并行运行 我在这里拍摄的是Spring Boot应用程序的一个实例,在并行执行测试时运行 我尝试在gradle文件中设置test部分,使其具有“forkCount”,我还尝试设置parallel=“classes”等选项,但这会产生一个错误,即“parallel”是未知属性(可能是junit 5的东

我的Spring Boot应用程序还启动gRPC服务及其REST(HTTP)服务。我已经为gRPC和REST编写了具体的测试。但是,当我运行gradle测试时,这些测试是按顺序运行的;它们没有理由不能并行运行

我在这里拍摄的是Spring Boot应用程序的一个实例,在并行执行测试时运行

我尝试在gradle文件中设置test部分,使其具有“forkCount”,我还尝试设置parallel=“classes”等选项,但这会产生一个错误,即“parallel”是未知属性(可能是junit 5的东西?)

forkCount选项不是我想要的,因为它将启动spring应用程序的多个实例

我还尝试从测试类中删除@RunWith,并创建一个单独的测试类(具有@RuWith注释),其中包含以下方法

@测试
void testRunner(){
JUnitCore.runClasses(ParallelComputer.classes(),{GrpcTests.class,restests.class});
}
但测试似乎仍按顺序运行

我也试过其他几种方法,对不起,我手头没有所有的方法

目标

理想情况下,我所希望的是在测试类并行运行时运行Spring Boot应用程序的一个实例(如果我也能让这些方法并行运行,那就太好了)

  • Java版本:“1.8.0_171”
  • Spring启动版本:2.0.4.0版本
    根据建议,我尝试添加
@测试
public void contextLoads()引发异常{
}
在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)。

您需要将@SpringBootTest与maxParallelForks结合起来

用@SpringBootTest注释单元测试@SpringBootTest将启动一个Spring启动上下文,该上下文将在所有测试中缓存

“Spring测试支持的一个很好的功能是,应用程序上下文缓存在两个测试之间,因此,如果您在一个测试用例中有多个方法,或者有多个具有相同配置的测试用例,那么它们只会产生启动应用程序一次的成本”

见:

将以下内容添加到build.gradle中。同时运行多个测试

tasks.withType(Test) {
    maxParallelForks = 4 //your choice here
}

请参见

您需要将@SpringBootTest与maxParallelForks相结合

用@SpringBootTest注释单元测试@SpringBootTest将启动一个Spring启动上下文,该上下文将在所有测试中缓存

“Spring测试支持的一个很好的功能是,应用程序上下文缓存在两个测试之间,因此,如果您在一个测试用例中有多个方法,或者有多个具有相同配置的测试用例,那么它们只会产生启动应用程序一次的成本”

见:

将以下内容添加到build.gradle中。同时运行多个测试

tasks.withType(Test) {
    maxParallelForks = 4 //your choice here
}

请参见

这不起作用。与我尝试的“forkCount”类似,它启动应用程序的多个实例。这可以在关机时看到,因为我从我的gRPC服务器进程中收到两条消息:
2019-04-25 10:24:17.245信息**53838**因为JVM正在关机而关机gRPC服务器2019-04-25 10:24:30.125信息**53839**因为JVM正在关机而关机gRPC服务器
您可以从PID(双“*”中看到)他们是不同的。嘿,吉姆,你能发布一个使用gRPC和@SpringBootTest的测试吗?这不起作用。与我尝试的“forkCount”类似,它启动应用程序的多个实例。这可以在关机时看到,因为我从我的gRPC服务器进程中收到两条消息:
2019-04-25 10:24:17.245信息**53838**因为JVM正在关机而关机gRPC服务器2019-04-25 10:24:30.125信息**53839**因为JVM正在关机而关机gRPC服务器
您可以从PID(双“*”中看到)他们是不同的。嘿,吉姆,你能发布一个使用gRPC和@SpringBootTest的测试吗?