我正在尝试使用Robolectric来实现单元测试,以替换android.jar中的 stub 方法,同时还使用jMockit来模拟Android类(在我的情况下为Fragment)。但是,我似乎无法使其正常工作。如果使用@RunWith(RobolectricTestRunner.class)注释测试类,则会得到:



如果我使用@RunWith(JMockit.class)或不使用@RunWith,则显示“Stub!”。异常(exception)情况。

目前,我的类路径具有以下顺序:robolectric,jmockit,junit,android。

有人可以让jmockit和robolectric一起玩得很好吗?

最佳答案

这应该是可能的。我还没有测试过,但是您可以创建自己的测试运行器。

看一下JMockit和Robolectric测试运行程序的源代码:

  • Robolectric
  • JMockit

  • 在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 - android-jmockit和robolectric可以共存吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14780965/

    10-10 16:05