在構建單元測試的同時,我正努力嘗試實現以下功能: 我想要一個接收Varargs類的函數,並且將有能力實例化每個給定的類。 這件事情是這樣的:在函數中創建不同類的實例
public static void mockContextBeans(Class<?>... classes) throws Exception{
for (Class<?> c : classes){
when(context.getBean(c)).thenReturn(c.newInstance());
}
}
可有人請點我到正確的方式實現它?
感謝
這看起來很像你試圖模仿春天 - 不要那樣做。 Spring提供了功能強大且完整的[用於測試Spring的系統](https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/testing-introduction.html)。不要試圖重寫自己,要麼你會失敗,要麼會花費你幾個月的開發時間。 –
正如您的參考文獻中所述: _組成您的應用程序的POJO應該可以在JUnit或TestNG測試中測試,對象只需使用新運算符實例化,不需要Spring或任何其他容器。你可以使用模擬對象(結合其他有價值的測試技術)來單獨測試你的代碼。這是我試圖實現的目標,我在代碼中有部分代碼,其中有如下行:「context.getBean (...)「,我想嘲笑他們。 假設我不能更改生產代碼。 –
_「我在代碼中有部分代碼,其中有像'context.getBean(...)'_」 - eugh。你的問題就在那裏。你的代碼**不是**單元可測試的,因爲你陷入了經典的使用'ApplicationContext'作爲多用途魔法工廠的反模式。如果您**需要將'ApplicationContext'注入到bean中,請退後一步並考慮另一種方式。 –