Java Spring测试上下文自动连线
对于这个愚蠢的问题,我很抱歉,但是我不明白为什么这段代码不能与Spring一起工作Java Spring测试上下文自动连线,java,testing,spring-boot,spring-boot-test,Java,Testing,Spring Boot,Spring Boot Test,对于这个愚蠢的问题,我很抱歉,但是我不明白为什么这段代码不能与Spring一起工作 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = AnnotationConfigContextLoader.class) public class DBDumpTest { @Autowired private DataSource source; @Configuration stat
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class)
public class DBDumpTest {
@Autowired
private DataSource source;
@Configuration
static class ContextConfiguration {
@Bean
public DataSource dataSource() {
return Mockito.mock(DataSource.class);
}
}
@Test
public void testDump() throws Exception {
Assert.assertNotNull(source); //OK
Assert.assertNotNull(new DBDump().getDatasource()); //NULL NOT OK
}
}
课堂上:
public class DBDump {
private static final Logger logger = LoggerFactory.getLogger(DBDump.class);
@Autowired
private DataSource datasource;
public DataSource getDatasource() {
return datasource;
}
}
那么,为什么new DBDump().getDatasource()不返回模拟实例,而在测试类中@Autowired注释似乎可以工作呢?我认为在启动整个spring上下文时,没有必要模拟datasource。无论如何,您必须告诉我们到底什么不起作用。我希望新的DBDump().getDatasource()不是空的,而是通过@Autowired从ContextConfiguration注入的。DataSource只是一个示例类,它可以是任何其他bean。为什么Spring应该注入Spring范围外新创建的实例(新DBDump()),我认为在启动整个Spring上下文时,没有必要模拟DataSource。无论如何,您必须告诉我们到底什么不起作用。我希望新的DBDump().getDatasource()不是空的,而是通过@Autowired从ContextConfiguration注入的。DataSource只是一个示例类,它可以是任何其他bean。为什么Spring要注入Spring范围之外新创建的实例(新DBDump())。。。