我有一个使用一些 Spring 上下文的测试。在这些上下文中,声明了许多 bean。我希望测试使用上下文 bean 的实际实现,除了其中一个,我想使用 MOCK。
我试图使 Test 成为 Configuration 组件(带有 @Configuration 注释),但 XML 似乎优先于 @Bean 注释,所以它不起作用,这样:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"context1.xml", "context2.xml", ...})
@Configuration
public class MyTest{
@Inject
private MyTargetBean target;
private AnotherBean myMock = mock(AnotherBean.class);
@Bean
public AnotherBean myMock() { return myMock; }
.....
我知道我可以在 XML 中定义 Mocks,但为此我需要为每个我希望执行此操作的测试提供一个额外的 XML 文件。我想避免这种复杂性。
有没有办法在上下文中注入一个 bean(如模拟)而不是通过 XML?
谢谢!