android - 使用 Mockito 1.9.5 和 DexMaker-Mockito-1.0 的验证错误

标签 android junit mockito cglib dexmaker

像许多其他人一样,我很高兴听到 Mockito now works with Android并关注 this tutorial亲眼看到它。一切看起来都非常棒,我开始将模拟解决方案整合到我的 Android 测试项目中......

错误

但是,在设置我的应用程序的测试项目以利用 mockito-all-1.9.5dexmaker-1.0dexmaker-mockito-1.0 jars 我的第一个测试用例遇到了问题。正是 this problem实际上。我需要帮助的部分是;

Caused by: java.lang.VerifyError: org/mockito/cglib/core/ReflectUtils
at org.mockito.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:167)
at org.mockito.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at org.mockito.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:217)
at org.mockito.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:117)
at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:109)
at org.mockito.cglib.core.KeyFactory.create(KeyFactory.java:105)
at org.mockito.cglib.proxy.Enhancer.<clinit>(Enhancer.java:70)

我被告知这个“还不能正常工作”,因为堆栈跟踪暗示没有使用 DexMaker jar - 引用 this response .但是,我怀疑我在项目设置方面做错了什么,所以我希望从这里的集体知识库中汲取经验,看看这确实是用户错误还是 beta 错误。

我的 Android 测试项目设置

请在下面找到我的测试项目配置的屏幕截图。该项目是通过 Android 向导创建的,除了在 libs 目录下包含 Mockito 和 DexMaker jar(如上所述)之外,没有其他任何特殊功能。

Test Project Configuration

测试

不管测试的内容(在执行单元测试之前测试失败)设置如下所述;

public class TestSpotRatingCalculator extends InstrumentationTestCase {
  @Mock
  private AService aService; // Changed the service names being used here - not important.
  @Mock
  private BService bService;
  @Mock
  private CService cService;
  @Mock
  private DService dService;

  /**
   * @see android.test.AndroidTestCase#setUp()
   */
  @Override
  protected void setUp() throws Exception {
    super.setUp();
    MockitoAnnotations.initMocks(this);  // Failure here with aforementioned stacktrace...
  }

如果有人知道出了什么问题,请在此处发出声音。

最佳答案

您好,我遇到了同样的问题,我发现这篇文章非常有用!

http://corner.squareup.com/2012/10/mockito-android.html

关键信息是:

To use Mockito on a device or emulator, you’ll need to add three .jar files to your test project’s libs directory: mockito-all-1.9.5.jar, dexmaker-1.0.jar, and dexmaker-mockito-1.0.jar.

关于android - 使用 Mockito 1.9.5 和 DexMaker-Mockito-1.0 的验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13048985/

相关文章:

java - 如何在 Java 中模拟请求 header

java - 如何在 JUnit5 中测试引发异常?

java - 如何测试依赖于初始参数的方法?

java - 使用 @InjectMocks 注入(inject) String 属性

android - JNI : Catch NewStringUTF Inner-Exception

android - 弯曲的按钮和一个圈子

android - 在 BrowseFragment 之外重用 AndroidTV RowsFragment

android - 如何使用 ViewPager 的 fragment 首选项?

java,mockito - 我如何找出调用了哪些模拟?

java - 运行测试时 Robolectric PowerMock java.lang.NoClassDefFoundError 错误