一尘不染

在单元测试中覆盖自动装配的Bean

spring

有没有一种简单的方法可以轻松地在特定的单元测试中覆盖自动装配的Bean?编译类中每种类型只有一个bean,因此在这种情况下自动装配不是问题。测试类将包含其他模拟。运行单元测试时,我只想指定一个基本的附加配置,运行该单元测试时,请使用此模拟而不是标准Bean。

概要文件似乎对我的需求有些矫kill过正,而且我不确定使用主要注解是否可以实现,因为不同的单元测试可能具有不同的模拟。


阅读 571

收藏
2020-04-19

共1个答案

一尘不染

如果你只是想在测试中提供其他bean,我认为你不需要使用spring配置文件或嘲笑。

只需执行以下操作:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = { TestConfig.class })
public class MyTest
{
    @Configuration
    @Import(Application.class) // the actual configuration
    public static class TestConfig
    {
        @Bean
        public IMyService myService()
        {
            return new MockedMyService();
        }
    }

    @Test
    public void test()
    {
        ....
    }
}

注意:已通过弹簧护套1.3.2 /弹簧4.2.4测试

2020-04-19