我正在从我的代码中运行 JUnit:
Result result = JUnitCore.runClasses(MyClassNameTest.class);
我正在处理的问题是 MyClassName 依赖于其他一些类 - 假设它的名称是 SomeOtherClass,我需要该类以某种方式将其实例注入“JUnit 运行时”以对 MyClassName 可见。可能吗?
你不应该需要其他类来做你的测试——我建议你模拟它们。我会选择Mockito ,这个问题对各种选项进行了很好的讨论。如果您无法通过模拟其他依赖项来进行测试,我强烈建议您重构代码,以便可以完成。
如果你真的不想走那条(正确的)路径,你可以尝试一些依赖注入框架,比如Spring,并为每个测试类设置一个单独的上下文。在junit4,您可以使用@BeforeClass
@BeforeClass
public void initSpring()
{
Application context = getTestAppContext();//should be unique config for this class
requiredProperty = contex.getBean("someProperty");
}
考虑在Guice等框架中使用依赖注入。这是一个介绍,可以让您很好地了解它是什么以及如何使用它:
当然有可能。
一种方法是使用 Map,其中键是父类的类或名称,值是子类的类或名称。进行查找并将其传递给工厂进行实例化。