2012-10-16 76 views
0

如何在單元測試中模擬由Spring自動裝配的bean的ListMocking autowired @Resource List

到目前爲止,我無法達到我想要的結果。有沒有辦法做到這一點?

@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

退房Springockito。它允許在春季環境中用mock替換bean。

另一個問題是,使用類型擦除,您的List<IsAliveEnabledComponent>只是成爲List<Object>。所以你剛剛嘲笑List。這可能是Mockito忽略它的原因。

如果您正在加載Spring上下文,我會使用Springockito。否則,我將創建一組模擬IsAliveEnabledComponent實例,創建這些實例的列表並在設置中手動調用setter。

+0

看來,Springockito應該做的伎倆,但它太麻煩了:)結束了嘲笑IsAliveEnabledComponent和手動添加列表。 –