我正在尝试为具有多个模块的现有应用程序编写单元测试用例,每个模块中都有主类。有多个类具有\ @SpringBootApplication。我编写了一个简单的测试用例,但失败并出现以下错误。我如何继续其中之一的测试用例。
java.lang.IllegalStateException:发现多个 @SpringBootConfiguration注释的类[泛型bean:类 [com.marketshare.ReportingMainClass]; scope =; abstract = false; lazyInit = false; autowireMode = 0; dependencyCheck = 0; autowireCandidate = true; primary = false; factoryBeanName = null; factoryMethodName = null; initMethodName = null; destroyMethodName = null; 在文件[C:\ My中定义 数据\工作区\ services2 \微服务\ Reporting-Microservice \ build \ classes \ java \ main \ com \ marketshare \ ReportingMainClass.class], 通用bean:类[com.marketshare.SharedMain]; scope =; abstract = false; lazyInit = false; autowireMode = 0; dependencyCheck = 0; autowireCandidate = true; primary = false; factoryBeanName = null; factoryMethodName = null; initMethodName = null; destroyMethodName = null; 在URL中定义 [jar:文件:/ C:/My%20Data/workspace/services2/microservices/Shared-Module/build/libs/Shared-Module-1.0-SNAPSHOT.jar!/com/marketshare/SharedMain.class]] 在org.springframework.util.Assert.state(Assert.java:70) 在org.springframework.boot.test.context.SpringBootConfigurationFinder.scanPackage(SpringBootConfigurationFinder.java:69)处 在org.springframework.boot.test.context.SpringBootConfigurationFinder.findFromPackage(SpringBootConfigurationFinder.java:59) 在org.springframework.boot.test.context.SpringBootConfigurationFinder.findFromClass(SpringBootConfigurationFinder.java:52)
这是代码段
@RunWith(SpringRunner.class)
@WebMvcTest(CustomReportController.class)
public class CustomReportControllerTest {
}
我只想对控制器进行单元测试。顺便说一句,我是春季世界的新手。
答案 0 :(得分:1)
@RunWith(SpringRunner.class)将加载spring上下文。要仅测试控制器,可以使用
@RunWith(MockitoJUnitRunner.class)
public class CustomReportControllerTest {
}
答案 1 :(得分:0)
有一种简单的方法,您可以在TestApplication
源文件夹下创建一个test
的新Spring Boot应用程序,就像
src \ test \ java \ com \ example \ TestApplication.java
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan("......").
@EnableAsync
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
并将您的软件包添加到@ComponentScan
中,您可以获得所有的spring boot功能,并且仅适用于测试建议。
答案 2 :(得分:0)
添加@SpringBootTest @RunWith(SpringRunner.class) @AutoConfigureMockMvc 在测试类和Autowire MockMvc上使用这些注释,然后可以使用mockMvc.perform测试Controller方法