当前位置: 首页 > 知识库问答 >
问题:

Android应用程序上的PowerMock+Mockito+Maven显示Dex加载器错误

夹谷成龙
2023-03-14

我试图在我的单元测试(JUnit4.12)中使用PowerMock。

我已经没有任何问题地集成了Mockito。这是一个Android应用程序。

[2015-01-15 15:22:22 - Dex Loader] Unable to execute dex: Multiple dex files define Lorg/hamcrest/Description;
[2015-01-15 15:22:22 - CLAP] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/hamcrest/Description;
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>1.9.5</version>
            <scope>test</scope>
        </dependency>

       <dependency>
          <groupId>org.powermock</groupId>
          <artifactId>powermock-module-junit4</artifactId>
          <version>1.6.1</version>
          <scope>test</scope>
       </dependency>

       <dependency>
          <groupId>org.powermock</groupId>
          <artifactId>powermock-api-mockito</artifactId>
          <version>1.6.1</version>
          <scope>test</scope>
       </dependency>

编辑

我很确定,当我真正运行应用程序(不是在测试中)时,我所需要做的就是从依赖项中删除PowerMock,但我不知道如何做到这一点。我正在使用Eclipse,所以我需要一个在这种环境中工作的解决方案。我已经检查了Maven的配置文件和排除,但我看不出如何实现这一点。我对Maven很陌生。任何帮助都将不胜感激。

此外,当我移除PowerMock依赖项(以及使用它的所有单元测试)时,项目现在就可以在我的设备上毫无问题地运行了。

    null

编辑3我用Maven从头创建了一个Android项目,看看这是我的主要应用程序还是Maven的问题。问题似乎出在Maven或PowerMock依赖项上。如果您想尝试,这里是完整的java项目。在这个项目中没有单元测试,我只想在我的Android机器上运行它。我仍然收到完全相同的信息。

共有1个答案

端木高邈
2023-03-14

我终于解决了这个问题,但我并不了解一切。非常感谢Eugen Martynov的帮助和这篇文章,它为我指明了正确的方向。

问题似乎是Maven在嵌套依赖项中的重复的。jar文件方面有一个大问题。通过使用类搜索,我发现hamcrest类名“description”在我的项目中出现了3次!

因此,我研究了如何在Maven中排除依赖项,并发现您可以在Maven Pom编辑器中完成所有这些。您可以在dependencies选项卡中单击某个依赖项并执行“Remove”。

下面是最后的依赖关系代码:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <exclusions>
        <exclusion>
            <artifactId>hamcrest-core</artifactId>
            <groupId>org.hamcrest</groupId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>1.10.8</version>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <artifactId>objenesis</artifactId>
            <groupId>org.objenesis</groupId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
    <optional>true</optional>
    <exclusions>
        <exclusion>
            <artifactId>junit</artifactId>
            <groupId>junit</groupId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito</artifactId>
    <version>1.6.1</version>
    <scope>test</scope>
    <optional>true</optional>
    <exclusions>
        <exclusion>
            <artifactId>mockito-all</artifactId>
            <groupId>org.mockito</groupId>
        </exclusion>
    </exclusions>
</dependency>
 类似资料:
  • 一个生产应用程序如何向用户显示一个未发现的类错误,但在模拟器上,它在Android9.0上运行得很好。难道仿真程序在编译或构建过程中也会中断或显示错误吗? java.lang.RuntimeException: done(asynctask.java:354)在java.util.concurrent.FutureTask.FinishCompletion(futureTask.java:383)

  • 我需要了解如何显示主javaFX应用程序加载的FXML文件中插入的元素,我的javaFX应用程序的主是: 该文件可以正常工作并正确加载FXML文件,问题是它没有显示顶部矩形,这是FXML文件: 我显然已经创建了CSS文件,并用我想要的属性对元素进行了样式化,这就是CSS: 这个档案有什么问题?我只能看到锚窗的底色!我试图将放入元素中,但我仍然只看到锚窗格的背景颜色,而看不到矩形!我应该使用区域而不

  • 我正在尝试使用rails创建新项目,但它显示错误。我正在处理mac及其显示错误 $rails新特快专递

  • 我是新开发人员。创建生成android APK时发现错误。 已经设置到环境变量,但什么都没发生...请帮帮我。给我这个的解决方案。 D:\Ionic\testPushNotification

  • 我正在尝试运行Spring Boot REST API应用程序,但遇到了404错误。 波姆。xml 我还尝试了,但没有成功。你能帮我解决这个问题吗? 如果我打http://localhost:8080/hello网址,然后我得到404。

  • 错误如下: 02-11 13:24:31.561 526 2-5262/?E/AndroidRuntime:致命异常:main process:com.example.vicky.project,pid:5262 java.lang.runtimeException:无法启动活动ComponentInfo{com.example.vicky.project/com.example.vicky.pr

  • 我已经测试了http://api.jquerymobile.com/loader/的代码。

  • 设置——我的Android应用程序在加载时调用REST API,从运行在Google app Engine上的服务器获取json提要。它解析这个json并填充一个包含ItemListBaseAdapter的列表。我正试图弄清楚它会从这里走向何方。 问题——当我通过USB在我的设备上构建和部署这个应用程序时,它像预期的那样工作。但是,当我从Playstore上传和下载这个应用程序时,我看到一个空白屏