laz*_*pig 3 junit android gradle
我最终将使用JAR文件运行的旧单元测试迁移到使用gradle但是我在获取正确的组合时遇到了很多麻烦,并且不确定我在做什么是对还是错.首先,这些是我正在使用的所有jar文件.
dexmaker-1.0.jar
dexmaker-mockito-1.0.jar
fest-android-1.0.7.jar
fest-assert-core-2.0M10.jar
fest-util-1.2.5.jar
junit-4.11.jar
mockito-all-1.9.5.jar
the-missing-android-xml-junit-test-runner-release-1.3_2.jar <---- I think this is used to get reports for the unit tests, is there a way that I don't have to use this anymore?
Run Code Online (Sandbox Code Playgroud)
当我将所有这些JAR导入时,就像下面的JAR一样,它运行正常,所以这是一件好事,但并不理想:
androidTestCompile fileTree(dir: 'libs/test', include: '*.jar')
Run Code Online (Sandbox Code Playgroud)
接下来,我尝试将所有JAR文件更改为gradle-maven依赖项,如下所示
androidTestCompile fileTree(dir: 'libs/test', include: '*.jar')
androidTestCompile 'junit:junit:4.11+'
androidTestCompile ('com.squareup:fest-android:1.0.+') {
exclude group: 'com.android.support'
}
androidTestCompile 'org.easytesting:fest-assert-core:2.0M10'
androidTestCompile 'org.easytesting:fest-util:1.2.+'
androidTestCompile 'org.mockito:mockito-all:1.9.+'
androidTestCompile 'com.google.dexmaker:dexmaker:1.+'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.+'
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为在尝试构建和运行单元测试时,我得到以下结果:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lorg/hamcrest/Description;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
...
Run Code Online (Sandbox Code Playgroud)
所以我看了几个地方来帮我解决这个问题,Android Gradle DexException:多个dex文件定义Lorg/hamcrest /描述 Android测试:'多个dex文件'使用'gradle check connectedCheck'Android + Powermock + Mockito + Maven build ClassNotFoundException出错,他们建议我尝试以下方法:
androidTestCompile fileTree(dir: 'libs/test', include: '*.jar')
androidTestCompile('junit:junit:4.11+') {
exclude group: 'org.hamcrest'
}
androidTestCompile ('com.squareup:fest-android:1.0.+') {
exclude group: 'com.android.support'
}
androidTestCompile 'org.easytesting:fest-assert-core:2.0M10'
androidTestCompile 'org.easytesting:fest-util:1.2.+'
androidTestCompile 'org.mockito:mockito-all:1.9.+'
androidTestCompile 'com.google.dexmaker:dexmaker:1.+'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.+'
Run Code Online (Sandbox Code Playgroud)
和
androidTestCompile fileTree(dir: 'libs/test', include: '*.jar')
androidTestCompile 'junit:junit:4.11+'
androidTestCompile ('com.squareup:fest-android:1.0.+') {
exclude group: 'com.android.support'
}
androidTestCompile 'org.easytesting:fest-assert-core:2.0M10'
androidTestCompile 'org.easytesting:fest-util:1.2.+'
androidTestCompile('org.mockito:mockito-all:1.9.5') {
exclude group: 'org.hamcrest'
}
androidTestCompile 'com.google.dexmaker:dexmaker:1.+'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.+'
Run Code Online (Sandbox Code Playgroud)
但仍然产生以下结果:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lorg/hamcrest/Description;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
Run Code Online (Sandbox Code Playgroud)
我根据一些建议尝试了以下更改junit和mockito.
androidTestCompile 'junit:junit-dep:4.11+'
androidTestCompile 'org.mockito:mockito-core:1.9.+'
Run Code Online (Sandbox Code Playgroud)
我得到了
Error: duplicate files during packaging of APK /.../app/build/outputs/apk/app-debug-test-unaligned.apk
Path in archive: LICENSE.txt
Origin 1: /.../.gradle/caches/modules-2/files-2.1/junit/junit/4.11/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar
Origin 2: /.../.gradle/caches/modules-2/files-2.1/org.hamcrest/hamcrest-core/1.3/42a25dc3219429f0e5d060061f71acb49bf010a0/hamcrest-core-1.3.jar
You can ignore those files in your build.gradle:
android {
packagingOptions {
exclude 'LICENSE.txt'
}
}
FAILED
FAILURE: Build failed with an exception.
Execution failed for task ':app:packageDebugTest'.
Run Code Online (Sandbox Code Playgroud)
在APK LICENSE.txt中复制的重复文件文件1:/Users/simonadmin/.gradle/caches/modules-2/files-2.1/junit/junit/4.11/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit-4.11.jar文件2:/ Users/simonadmin/.gradle /高速缓存/模块-2 /文件-2.1 /的junit/junit的/ 4.11/4e031bb61df09069aeb2bffb4019e7a5034a4ee0/junit的-4.11.jar
有什么建议或帮助吗?我不想再回到使用JAR了.
laz*_*pig 17
实际上,我最后只是通过添加就知道了它并且它起作用了.
android {
// stuff before
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'LICENSE.txt'
}
}
Run Code Online (Sandbox Code Playgroud)
我的依赖项有以下几点
dependencies {
androidTestCompile ('com.squareup:fest-android:1.0.+') {
exclude group: 'com.android.support'
}
androidTestCompile 'com.google.dexmaker:dexmaker:1.+'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.+'
androidTestCompile 'junit:junit:4.11'
androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
androidTestCompile 'org.mockito:mockito-core:1.9.5'
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3749 次 |
最近记录: |