在工厂实现的Junit测试中的依赖注入

时间:2011-02-06 03:47:48

标签: spring junit

我有一些API代码,我必须提供解决方案。我正在考虑使用带有此代码的spring。

有一个工厂界面,我们称之为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的了解是无知的(我知道我需要多少知道/阅读)

1 个答案:

答案 0 :(得分:0)

这取决于abcFactory是实例字段,静态字段还是局部变量。

如果它是实例字段或静态字段,您可以通过实现特殊的JUnitRunner来执行DI,并使用@RunWith注释测试用例来试试运气。您也可以在其他测试用例中重复使用相同的Runner。

我这样做是为了注入静态字段或实例字段。