我有一个SpringBoot多模块应用程序,类似这样:
核心 客户1->取决于核心 customer2->取决于核心
我想为两者编写集成测试,但是我不想重复我的核心测试代码。现在,我有了一个带有SpringBootTest(classes = Customer1Application.class)的抽象类和许多测试类,主要用于测试核心功能。
@ContextConfiguration
@SpringBootTest(classes = Customer1Application.class)
@AutoConfigureMockMvc
public abstract class AbstractSpringBootTest
{
@Autowired
protected MockMvc mockMvc;
@Autowired
protected Validator validator;
...
}
我想检查Customer2应用程序中的更改是否破坏了核心功能,因此我想使用@SpringBootTest(classes = Customer2Application.class)批注运行这些测试。
如何在注释中配置应用程序类?有没有一种方法可以与其他应用程序上下文一起运行测试,而无需手动更改批注或重复所有步骤?
答案 0 :(得分:0)
我不知道它是否可以工作,但是我会尝试从@SpringBootTest
中删除AbstractSpringBootTest
,然后定义两个测试类,如下所示:
@SpringBootTest(classes = Customer1Application.class)
class Customer1ApplicationSpringBootTest extends AbstractSpringBootTest {}
@SpringBootTest(classes = Customer2Application.class)
class Customer2ApplicationSpringBootTest extends AbstractSpringBootTest {}
编辑:
所以我挖掘了Spring Boot的源代码,并提出了this solution。
基本上,要能够使用系统属性或属性文件来配置应该测试哪个@SpringBootApplication,您需要将类org.springframework.boot.test.context.SpringBootConfigurationFinder
的源复制到您自己的测试源根和编辑方法{{1 }}看起来像这样(当然您不必使用Lombok):
private Class<?> scanPackage(String source)
检查整个项目的link。
答案 1 :(得分:0)
您检查了吗? @SpringBootTest(classes = {Customer1Application.class,Customer2Application.class})