如何将自定义类对象注入Junit环境?

时间:2012-05-17 12:30:51

标签: java junit junit4 junit-ee

我从我的代码运行JUnit:

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

我正在处理的问题是,MyClassName依赖于其他类 - 让我们说它的名字是SomeOtherClass,我需要该类以某种方式将其实例注入“JUnit运行时”以使MyClassName可见。有可能吗?

3 个答案:

答案 0 :(得分:1)

你不应该让其他课程进行测试 - 我建议你嘲笑它们。我会选择Mockitothis question对各种选项进行了很好的讨论。如果您无法通过模拟其他依赖项来进行测试,我认真建议您重构代码,以便可以完成。

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

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

答案 1 :(得分:1)

考虑使用Guice等框架进行依赖注入。这是一个介绍,应该让你很好地了解它是什么以及如何使用它:

http://beust.com/weblog/2012/03/25/dependency-injection/

答案 2 :(得分:0)

当然可以。

一种方法是使用Map,其中键是父类的类或名称,值是子类或类的名称。进行查找并将其传递给工厂进行实例化。