2012-05-17 44 views
2

我从我的代码运行JUnit:如何将自定义类对象注入到Junit环境中?

Result result = JUnitCore.runClasses(MyClassNameTest.class); 

是我处理的问题是taht MyClassName是依赖于一些其他类 - 比方说,它的名字是SomeOtherClass,我需要的是一流的注入其instace以某种方式进入“JUnit运行时”,以便MyClassName可见。可能吗?

+0

什么是运行上面的代码行的确切的结果?你得到一个NoClassDefFoundError或ClassNotFoundException或别的东西? –

+0

测试类正在运行,但是我得到空指针异常 - 不可能将SomeOtherClass作为MyClasNameTest的成员。然而,我找到了一种解决方案,我认为没关系,但是我还没有测试过 - 我明天就做,然后发布我的回复。 – BlueLettuce16

回答

0

确定这是可能的。

一种方法是有一个地图,其中的关键是类或父类的名称和值是孩子的类或名称。执行查找并将其传递给工厂进行实例化。

1

你不应该需要其他类来做你的测试 - 我建议你嘲笑他们。 Mockito是我会选择的,而this question对各种选项有很好的讨论。如果你不能通过嘲笑其他依赖来做你的测试,我认真地建议你重构你的代码,以便完成它。

如果你真的不想去那条(右)路径,你可以尝试一些依赖注入框架,如Spring,并为每个测试类都有一个单独的上下文。在junit4可以使用@BeforeClass

@BeforeClass 
public void initSpring() 
{ 
    Application context = getTestAppContext();//should be unique config for this class 
    requiredProperty = contex.getBean("someProperty"); 
} 
+0

感谢您的解决方案,但是在我的项目中,我有200多个课程来模拟,其中大部分都非常大,所以嘲笑它们并不容易:( – BlueLettuce16

相关问题