2011-02-06 73 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。

我已经这样做了注入静态字段或实例字段。