android - jmockit 和 robolectric 可以共存吗?

标签 android robolectric jmockit

我正在尝试使用 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/

相关文章:

Android,检查 URL 存在后在 WebView 中打开 URL

android - Eclipse 中的 Robolectric 初始化错误

android - Robolectric 4 测试在 Robolectric.buildActivity().setup() 处失败,并出现 java.lang.NullPointerException : Bitmap config was null

java - 在 jmockit 中模拟被测类的私有(private)方法

android - 需要如何从 Android Activity 调用/使用 Java Web 服务的工作示例

android - 如何使用云功能向具有 FCM token 的多个设备发送推送通知

java - AES 和 IV 应如何用于文件上传?

android - 机器人 "INTERNET permission is required"

java - JMockit MockUp 类和 Mockito/mock 等价物

java - JMockit期望API——返回输入参数