我对正确的Spring Beans配置有疑问。我的整个应用程序都可以在Spring上正常工作,我想添加jUnit测试。不幸的是,豆子注射不正确。 我在同一模块中有两个目录。 我的整个应用都在里面:
/ src / main / java / main /
它可以正常工作,我添加了RestTest.java和BeanTestConfiguration.java 内部:
/ src / test / java / main /
@SpringBootTest
@RunWith(Spring.Runner.class)
@ContextConfiguration(classes=BeanTestConfiguration.class)
class RestTest {
@Autowired
public String testString;
@Test
public void send() {
System.out.println(testString);
Assert.assertNotNull(testString);
}
}
并配置BeanTestConfiguration
@Configuration
public class BeanTestConfiguration {
@Bean
public String testString() { return new String("Hello"); }
}
不幸的是,当我在发送方法System out上运行测试时,输出为null,并且Assert throws失败。 我在IntelliJ内部的项目结构中添加了Spring Application Context
答案 0 :(得分:1)
由于您的测试类和方法是程序包私有的,因此我假设您正在使用jUnit 5。
在jUnit 5中,应该使用@ExtendWith
注释而不是@RunWith
。特别是SpringExtension
通过使用@ExtendWith(SpringExtension.class)注释测试类,开发人员可以实现基于JUnit Jupiter的标准单元测试和集成测试,并同时获得TestContext框架的好处,例如支持加载应用程序上下文,对测试实例进行依赖注入,事务性测试方法执行,等等。
例如
@SpringBootTest
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes=BeanTestConfiguration.class)
class RestTest {
@Autowired
public String testString;
@Test
void send() {
System.out.println(testString);
Assert.assertNotNull(testString);
}
}
答案 1 :(得分:0)
谢谢大家的帮助。我发现进口有问题。我的@Test注释来自jUnit 5,而我的内部却有SpringRunner注释,该注释来自jUnit 4,结果是Spring无法正常工作并且没有注入bean。
再一次感谢大家。