springboot多模块项目的启动模块引入了其他模块的依赖(为了启动其他模块),其他模块需要写测试类@SpringBootTest需要指定启动类,如果引入启动模块就报循环依赖错误,这个怎么办
这是springboot多模块项目中的一个常见问题。有几种解决方法:
1. 在测试类中不指定启动类,让springboot自动检测启动类。使用@SpringBootTest(classes = {YourApplication.class})
2. 创建一个单独的启动类专门用于测试,在测试类中指定这个启动类。
@SpringBootTest(classes = {Test starter.class})
3. 使用@TestConfiguration注解一个配置类,在测试类中使用@SpringBootTest(classes = {YourTestConfig.class})指定这个配置类。
4. 将启动类移到一个独立的模块中,测试模块不依赖启动模块,直接指定启动类。
5. 使用Springboot的测试工具@WebMvcTest,它不会启动完整的Springboot应用,只会启动web层,这样可以避免循环依赖问题。
示例代码:
启动类:
java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
测试类:
java
@SpringBootTest(classes = Application.class)
@WebMvcTest
public class Test {
//测试方法
}
或者
java
@SpringBootTest(classes = TestConfig.class)
public class Test {
@Configuration
static class TestConfig { }
}
这些方法可以解决springboot测试类的循环依赖问题,选取一种自己项目中适用的方法即可。