加载配置集成测试的Spring boot@Import不工作

加载配置集成测试的Spring boot@Import不工作,spring,spring-boot,Spring,Spring Boot,我有一个简单的spring boot应用程序,我正在实施一些集成测试。我有两个类,一个将保存我的通用配置(Demo3ApplicationTests),另一个将保存我的集成测试类(DumyClassTest),请在下面查找,它暂时为空: @SpringBootTest(classes = Demo3Application.class) class Demo3ApplicationTests { @Test void contextLoads() { }

我有一个简单的spring boot应用程序,我正在实施一些集成测试。我有两个类,一个将保存我的通用配置(Demo3ApplicationTests),另一个将保存我的集成测试类(DumyClassTest),请在下面查找,它暂时为空:

@SpringBootTest(classes = Demo3Application.class)
class Demo3ApplicationTests {

    @Test
    void contextLoads() {
        
    }

}
我的集成测试类:

@Import(value = Demo3ApplicationTests.class)
public class DumyClassTest{
    
    
    
    @Autowired
    DemoService demoService;
    
    @Test
    public void testImportConfig() {
        
        demoService.logDummyMsg();
        
    }

}
当我运行testImportConfig测试时,demoService值为null,因为我猜@import我没有正确设置它。但是,当我扩展它时,即
dumycasstest扩展Demo3ApplicationTests
,demoService不为空,测试运行正常

知道为什么我使用导入注释时demoService为空吗


提前感谢。

因为您不是在Spring中运行它,而是作为一个普通的JUnit测试类(它不知道
@Import
.Thnks)来运行它,以便快速响应,但是即使导入类包含@SpringBootTest(classes=Demo3Application.class),它也不会在Spring上下文中执行。您应该先做一些研究。(at)导入用于spring配置类,而不是测试。所有测试类(带有(at)测试方法注释的测试类)单独需要(at)SpringBootTest。您在DummyTestClass中的测试是检查spring是否工作,而不是导入是否工作。您不需要检查spring是否工作-它有自己的测试,并且确实工作。您应该测试自己的系统是否工作。从结构角度看,单元测试和集成测试的区别在于spr的构造ing context.Btw:我不能使用at登录注释。不,因为测试需要使用
@springbootest
@RunWith(SpringRunner.class)
@Import是一个spring注释,所以您需要spring来解释它。因为您不是使用spring运行它,而是作为一个普通的JUnit测试类运行它(哪一个不知道导入的
@Import
.Thnks用于快速响应,但即使导入类包含@SpringBootTest(classes=Demo3Application.class),它也不会在spring上下文中执行?您应该先做一些研究。(at)导入用于spring配置类,而不是测试。所有测试类(带有(at)的测试类)测试方法注释)单独需要(at)SpringBootTest。您在DummyTestClass中的测试是检查spring是否工作,而不是导入是否工作。您不需要检查spring是否工作-它有自己的测试,并且确实工作。您应该测试自己的系统是否工作。从结构角度看,单元测试和集成测试的区别在于spr的构造ing context.Btw:我不能使用at登录注释。不行,因为测试需要用
@SpringBootTest
@RunWith(SpringRunner.class)
@Import是一个spring注释,所以您需要spring来解释它。