最近开始在 Spring 中使用 JavaConfig。现在我决定在不使用 xml 的情况下尽情享受测试。
打开坞站,一切都做对了,收益差别不大。规定了必要的注释和参数
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AppInit.class, loader = AnnotationConfigContextLoader.class)
接下来,我自动装配了所需的 Bean
@Autowired
private MyBean myBean;
我运行测试并得到 No qualifying bean of type 错误。
MyBean 被标记为@Component 并且没有在糖果中描述。
我已经在测试类中注册了一个静态类,并在其中描述了Bean 就是这样
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AppInit.class, loader = AnnotationConfigContextLoader.class)
public class MyBeanTest {
@Configuration
static class ContextConfiguration {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
@Autowired
private MyBean myBean;
它没有帮助,并且设置了 @Qualifier 注释,Bean 自己已经使用 AppInit.class 中定义的名称注册,没有任何帮助。
如果我错过了什么,你能告诉我吗?
据我了解,您需要在测试的注释中显式导入 ContextConfiguration 类。
这里的原理与 xml 相同 - 您必须明确描述哪些文件应该在测试上下文中或配置自动导入。
一般来说,我会将测试配置删除到一个单独的类中并重命名它(因为它可能与注释重叠)
一切变得更加简单,我忘记了@WebAppConfiguration 注释。我也注册了所有的配置文件,并没有来创建测试配置文件。您还需要从 ContextConfiguration 注释中删除 loader 参数
这是标题的结尾