2

我正在从我的代码中运行 JUnit:

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

我正在处理的问题是 MyClassName 依赖于其他一些类 - 假设它的名称是 SomeOtherClass,我需要该类以某种方式将其实例注入“JUnit 运行时”以对 MyClassName 可见。可能吗?

4

3 回答 3

1

你不应该需要其他类来做你的测试——我建议你模拟它们。我会选择Mockito ,这个问题对各种选项进行了很好的讨论。如果您无法通过模拟其他依赖项来进行测试,我强烈建议您重构代码,以便可以完成。

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

@BeforeClass
public void initSpring()
{
    Application context = getTestAppContext();//should be unique config for this class
    requiredProperty  = contex.getBean("someProperty");
}
于 2012-05-17T12:50:54.180 回答
1

考虑在Guice等框架中使用依赖注入。这是一个介绍,可以让您很好地了解它是什么以及如何使用它:

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

于 2012-05-18T02:51:55.623 回答
0

当然有可能。

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

于 2012-05-17T12:38:41.440 回答