相关疑难解决方法(0)

在Android Instrumentation测试中使用PowerMock和Mockito - 错误 - 重复文件 - org.mockito.plugins.MockMaker

我试图使用PowerMock用静态方法模拟一个类,但具体来说我希望在Android Instrumentation测试中这样做.为了清楚起见,我希望在真正的Android设备或模拟器上运行测试.我使用的是Android Studio(1.5.1)和Gradle(1.5.0).为了避免任何红色鲱鱼,我创造了一个非常基本且相当原始的"你好世界"应用程序.这个应用程序只显示2个文本,一个从静态方法检索,一个从非静态方法检索.我已经为这两个"文本提供者"类编写了仪器测试.你可以在这里看到这个应用:

https://github.com/Kai2k/PowerMockAndroidTest.git

当试图运行检测测试时,我得到的错误似乎很多人试图实现这一点:

com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK mockito-extensions/org.mockito.plugins.MockMaker
File1: /Users/kaiarmer/.gradle/caches/modules-2/files-2.1/com.crittercism.dexmaker/dexmaker-mockito/1.4/70892a94894462c1b35df3c8a77d21b7e843550b/dexmaker-mockito-1.4.jar
File2: /Users/kaiarmer/.gradle/caches/modules-2/files-2.1/org.powermock/powermock-api-mockito/1.6.4/fe12509b7e9e49d25131f4155145748a31e42e40/powermock-api-mockito-1.6.4.jar
Run Code Online (Sandbox Code Playgroud)

我对应用程序的build.gradle文件的依赖关系如下所示:

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
testCompile 'org.powermock:powermock-api-mockito:1.6.4'
testCompile 'org.powermock:powermock-module-junit4-rule-agent:1.6.4'
testCompile 'org.powermock:powermock-module-junit4-rule:1.6.4'
testCompile 'org.powermock:powermock-module-junit4:1.6.4'

androidTestCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'org.powermock:powermock-api-mockito:1.6.4'
androidTestCompile 'com.android.support:support-annotations:23.1.1'
androidTestCompile 'com.android.support.test:runner:0.4.1'
androidTestCompile 'com.android.support.test:rules:0.4.1'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
androidTestCompile 'com.crittercism.dexmaker:dexmaker:1.4'
androidTestCompile 'com.crittercism.dexmaker:dexmaker-mockito:1.4'

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}
Run Code Online (Sandbox Code Playgroud)

您会注意到power mock和相关库(除了androidTestCompile之外)的一些'testCompile'依赖项.这是因为对于腰带和牙箍,我想看看我是否可以使用junit(非仪器)测试(使用电源模拟)工作.我能够实现这一点,但不是仪器测试.这是我的(可怕的)代码:

主要活动:

package com.example.android.powermocktest;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public …
Run Code Online (Sandbox Code Playgroud)

java android mockito powermock gradle

7
推荐指数
1
解决办法
5342
查看次数

将powermock添加到android测试项目时,apkbuilder会找到重复的文件

我正在尝试将powermock-mockito和mockito添加到Android Test项目中.我使用android命令行工具创建了android测试项目来创建build.xml和项目结构.我的libs /目录中有以下jar:

  • dexmaker-1.0.jar
  • dexmaker-的Mockito-1.0.jar
  • 的Mockito-ALL-1.9.5.jar
  • powermock-的Mockito-1.5-full.jar

当我尝试使用ant debug构建项目时,出现以下错误:

[apkbuilder] Creating ProjectTests-debug-unaligned.apk and signing it with a debug key...
[apkbuilder] Found duplicate file for APK: mockito-extensions/org.mockito.plugins.MockMaker
[apkbuilder] Origin 1: /home/cmiller/Projects/android-project/ProjectTests/libs/powermock-mockito-1.5-full.jar
[apkbuilder] Origin 2: /home/cmiller/Projects/android-project/ProjectTests/libs/powermock-mockito-1.5-full.jar

BUILD FAILED
/home/cmiller/Applications/adt-bundle-linux/sdk/tools/ant/build.xml:951: The following error occurred while executing this line:
/home/cmiller/Applications/adt-bundle-linux/sdk/tools/ant/build.xml:962: The following error occurred while executing this line:
/home/cmiller/Applications/adt-bundle-linux/sdk/tools/ant/build.xml:319: com.android.sdklib.build.DuplicateFileException: Duplicate files at the same path inside the APK
Run Code Online (Sandbox Code Playgroud)

我不确定它是如何在一个罐子里找到一个重复的文件.build.xml文件根本没有被修改过,我还没有创建custom_rules.xml.任何帮助将不胜感激.

android unit-testing mockito powermock

5
推荐指数
1
解决办法
1665
查看次数

标签 统计

android ×2

mockito ×2

powermock ×2

gradle ×1

java ×1

unit-testing ×1