2011-02-06 122 views
2

我有一些API代碼,我必須提供解決方案。我正在研究使用此代碼的春天。Junit測試中的依賴注入工廠實現

有一個工廠接口,可以稱之爲ABCFactory。它返回服務的一個實例

public interface ABCFactory { 
    XYZService getXYZService(); 
} 

XYZService它自己也是一個接口。

現在我有一個我無法修改的TestClass。它使用一些像

ABCFactory abcFactory = (ABCFactory) Class.forName(
      "com.me.blah.ABCFactoryImpl").newInstance(); 

我必須拿出ABCFactoryImpl,這就是一切都好。但我不明白,如果有可能使用ABCFactoryImpl的依賴注入。 Junit測試沒有Spring的知識。是否甚至有可能讓每一件事情都上升,而不是讓Junit測試意識到春天的背景。

PS:我的春天的知識DI是已知的,不稱職(我知道我是多麼需要知道/讀取)

+0

最好的辦法是讓jUnit測試Spring瞭解,否則你可能仍然存在未連接的依賴關係。請參閱http://static.springsource.org/spring/docs/3.0.x/reference/testing.html – 2011-02-06 04:46:34

回答

0

這取決於abcFactory是否是一個實例字段,靜態字段或局部變量。

如果它是一個實例字段或靜態字段,可以通過實現一個特殊的JUnitRunner來執行DI操作並用@RunWith註釋測試用例。您也可以在其他測試用例中重複使用相同的Runner。

我已經這樣做了注入靜態字段或實例字段。