我正在尝试使用 Robolectric 实现单元测试以替换 android.jar 中的 stub 方法,同时还使用 jMockit 模拟 Android 类(在我的例子中是 Fragment)。但是,我似乎无法让它工作。如果我用 @RunWith(RobolectricTestRunner.class)
注释测试类,我得到:
java.lang.IllegalStateException: JMockit wasn't properly initialized; check that jmockit.jar precedes junit.jar in the classpath (if using JUnit; if not, check the documentation)
如果我使用 @RunWith(JMockit.class)
或不使用 @RunWith
,我会得到“ stub !”异常(exception)情况。
目前,我的类路径按以下顺序排列:robolectric、jmockit、junit、android。
有人能让 jmockit 和 robolectric 一起玩得很好吗?
最佳答案
这应该是可能的。我还没有对此进行测试,但您可以创建自己的测试运行器。
查看 JMockit 和 Robolectric 测试运行器的源代码:
在这两个中,Robolectric 一个要复杂得多,因此我们不想重复该功能。 JMockit 测试运行器相当简单。它应该可以扩展 RobolectricTestRunner 并包含 JMockit 功能。
import mockit.internal.startup.*;
class MyTestRunner extends RobolectricTestRunner {
static { Startup.initializeIfNeeded(); }
/**
* Constructs a new instance of the test runner.
*
* @throws InitializationError if the test class is malformed
*/
public MyTestRunner(Class<?> testClass) throws InitializationError
{
super(testClass);
}
}
关于android - jmockit 和 robolectric 可以共存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14780965/