Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
Java Spring启动应用程序无法为2个控制器运行集成测试_Java_Spring_Spring Boot - Fatal编程技术网

Java Spring启动应用程序无法为2个控制器运行集成测试

Java Spring启动应用程序无法为2个控制器运行集成测试,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个使用SpringBoot 2.1.7用Java编写的RESTAPI。 它有2个控制器,每个控制器都有集成测试。 控制器位于同一控制器文件夹中的不同文件中 每个控制器的集成测试也在单独的文件中。 如果我注释掉1组控制器测试,则集成测试成功。 但是,如果我尝试为两个控制器运行所有集成测试,则会出现多个故障,并出现相同的错误: java.lang.IllegalStateException:配置错误:找到测试类[com.fedex.ground.transportation.fxglhlsc

我有一个使用SpringBoot 2.1.7用Java编写的RESTAPI。 它有2个控制器,每个控制器都有集成测试。 控制器位于同一控制器文件夹中的不同文件中

每个控制器的集成测试也在单独的文件中。 如果我注释掉1组控制器测试,则集成测试成功。 但是,如果我尝试为两个控制器运行所有集成测试,则会出现多个故障,并出现相同的错误:

java.lang.IllegalStateException:配置错误:找到测试类[com.fedex.ground.transportation.fxglhlschedulesvc.controller]的多个@BootstrapWith声明。ITFacilityController]

java.lang.IllegalStateException:配置错误:找到测试类[com.fedex.ground.transportation.fxglhlschedulesvc.controller.ITScheduleController]

这似乎是一个配置问题。 以下是我配置测试文件的方式: 设施控制员

@ActiveProfiles("local")
@AutoConfigureMockMvc
@SpringBootTest(classes = {FxgLhlScheduleSvcApplication.class, RedisConfig.class})
@ActiveProfiles("local")
@AutoConfigureMockMvc
@SpringBootTest(classes = FxgLhlScheduleSvcApplication.class)
对于调度控制器

@ActiveProfiles("local")
@AutoConfigureMockMvc
@SpringBootTest(classes = {FxgLhlScheduleSvcApplication.class, RedisConfig.class})
@ActiveProfiles("local")
@AutoConfigureMockMvc
@SpringBootTest(classes = FxgLhlScheduleSvcApplication.class)
我尝试添加这些配置注释,但出现了相同的错误:

@WebMvcTest(ScheduleController.class)
@ContextConfiguration(classes=FxgLhlScheduleSvcApplication.class)

@WebMvcTest(FacilityController.class)
@ContextConfiguration(classes = {FxgLhlScheduleSvcApplication.class, RedisConfig.class})
假设两个控制器在不同文件中的配置注释是什么。
控制器之间根本没有关联。

集成测试使用相同的ApplicationContext(除非特别设置为not)。问题是其中一个测试可以在上下文中进行更改,这会影响其他集成测试,比如更改某些bean的状态

因此,有一个注释
@DirtiesContext
,用于在该特定测试之后恢复/清除对上下文的影响


此注释的计算成本很高,因此您应该仅在必要时使用它。

在一个有效的测试上尝试@DirtiesContext!你能把它写在答案里吗?这样我就可以核对一下答案了。这是什么意思?我也可以用谷歌搜索,你能不能不包括
fxglhlschedulesvc应用程序
?如果包含主
@springbootplication
,它将初始化所有bean,这不是控制器测试所需的。