模拟自动装配的@Resource列表

时间:2012-10-16 14:13:02

标签: spring junit mockito

如何在单元测试中模拟Spring自动装配的List个bean。

到目前为止,我无法达到我想要的结果。有没有办法做到这一点?

@Component
public class CrmStatusChecker {

    @Resource
    private List<IsAliveEnabledComponent> components;

    ....
}

测试

@RunWith(MockitoJUnitRunner.class)
public class CrmStatusCheckerTest {

    @Mock
    private List<IsAliveEnabledComponent> isAliveComponents;

    @InjectMocks
    private final CrmStatusChecker crmStatus = new CrmStatusChecker();;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
    }

    ...
}

1 个答案:

答案 0 :(得分:1)

结帐Springockito。它允许用模拟替换spring环境中的bean。

另一个问题是,通过类型删除,您的List<IsAliveEnabledComponent>只会成为List<Object>。所以你刚刚嘲笑了List。这可能就是Mockito忽略它的原因。

如果要加载Spring上下文,我会使用Springockito。否则,我会创建一组模拟IsAliveEnabledComponent实例,创建一个列表并在您的设置中手动调用setter。