Android Studio 1.0.2 与 JUnit4 测试
Android Studio 1.0.2 with JUnit4 Tests
我目前正在使用 Android Studio 版本 1.0.2。我创建了几个 类 并让 Android Studio 为我生成了一些 JUnit 4 测试框架。当我生成这些测试时,它通知我在模块中找不到 JUnit4 库。有一个按钮显示 'Fix',所以我单击了它,它允许我创建一个新测试。我还检查了 git,它似乎没有更改任何其他文件。
我在尝试 运行 这些测试时似乎 运行 出错了。
这是我的测试结果
package com.example.username.shapes;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
public class PointTest {
@Rule
ExpectedException expectedException = ExpectedException.none();
@Test
public void testGimmie() throws Exception {
assertEquals(123456, Point.gimmie(55));
expectedException.expect(IllegalArgumentException.class);
Point.gimmie(-1);
}
}
我遇到了一些无法解析符号 'junit' 的错误。在此之后,我进行了搜索,发现了一些以前关于此的问题,但针对 1.0 之前的 Android Studio 版本。我最终将 androidTestCompile 'junit:junit:4.10'
添加到我的应用构建文件中。
当我尝试 运行 测试时,我收到一条错误消息
Error:(13, 9) error: cannot find symbol method assertEquals(int,int)
我尝试注释掉该行并 运行 进行测试,但随后出现此错误
Error:Execution failed for task ':app:dexDebugTest'.
com.android.ide.common.internal.LoggedErrorException: Failed to run command:
C:\Users\username\Downloads\adt-bundle-windows-x86_64-20140624\sdk\build-tools.1.1\dx.bat
--dex --no-optimize --output C:\Users\username\Documents\GitHub\ProjectName\app\build\intermediates\dex\test\debug
--input-list=C:\Users\username\Documents\GitHub\ProjectName\app\build\intermediates\tmp\dex\test\debug\inputList.txt
Error Code: 2 Output: UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define
Lorg/hamcrest/Description; at
com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) at
com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:302) at
com.android.dx.command.dexer.Main.run(Main.java:245) at
com.android.dx.command.dexer.Main.main(Main.java:214) at
com.android.dx.command.Main.main(Main.java:106)
有没有人可以指出或描述要采取的步骤的解决方案?我也很想知道是否还有其他方法可以添加 junit4 库。
我有一个类似的问题,通过从 junit-4x 中排除 hamcrest-core
模块来解决它。
androidTestCompile('junit:junit:4.10') {
exclude module: 'hamcrest-core'
}
androidTestCompile 'org.hamcrest:hamcrest-all:1.3'
我遇到了同样的问题。
我是通过以下方式解决的:
- 打开 window :Build Variants
- 在"Test Artfact", select "Unit Tests"
- 然后,您可以按照自己的方式创建测试。
我目前正在使用 Android Studio 版本 1.0.2。我创建了几个 类 并让 Android Studio 为我生成了一些 JUnit 4 测试框架。当我生成这些测试时,它通知我在模块中找不到 JUnit4 库。有一个按钮显示 'Fix',所以我单击了它,它允许我创建一个新测试。我还检查了 git,它似乎没有更改任何其他文件。
我在尝试 运行 这些测试时似乎 运行 出错了。
这是我的测试结果
package com.example.username.shapes;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
public class PointTest {
@Rule
ExpectedException expectedException = ExpectedException.none();
@Test
public void testGimmie() throws Exception {
assertEquals(123456, Point.gimmie(55));
expectedException.expect(IllegalArgumentException.class);
Point.gimmie(-1);
}
}
我遇到了一些无法解析符号 'junit' 的错误。在此之后,我进行了搜索,发现了一些以前关于此的问题,但针对 1.0 之前的 Android Studio 版本。我最终将 androidTestCompile 'junit:junit:4.10'
添加到我的应用构建文件中。
当我尝试 运行 测试时,我收到一条错误消息
Error:(13, 9) error: cannot find symbol method assertEquals(int,int)
我尝试注释掉该行并 运行 进行测试,但随后出现此错误
Error:Execution failed for task ':app:dexDebugTest'.
com.android.ide.common.internal.LoggedErrorException: Failed to run command: C:\Users\username\Downloads\adt-bundle-windows-x86_64-20140624\sdk\build-tools.1.1\dx.bat --dex --no-optimize --output C:\Users\username\Documents\GitHub\ProjectName\app\build\intermediates\dex\test\debug --input-list=C:\Users\username\Documents\GitHub\ProjectName\app\build\intermediates\tmp\dex\test\debug\inputList.txt Error Code: 2 Output: UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Lorg/hamcrest/Description; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:302) at com.android.dx.command.dexer.Main.run(Main.java:245) at com.android.dx.command.dexer.Main.main(Main.java:214) at com.android.dx.command.Main.main(Main.java:106)
有没有人可以指出或描述要采取的步骤的解决方案?我也很想知道是否还有其他方法可以添加 junit4 库。
我有一个类似的问题,通过从 junit-4x 中排除 hamcrest-core
模块来解决它。
androidTestCompile('junit:junit:4.10') {
exclude module: 'hamcrest-core'
}
androidTestCompile 'org.hamcrest:hamcrest-all:1.3'
我遇到了同样的问题。 我是通过以下方式解决的:
- 打开 window :Build Variants
- 在"Test Artfact", select "Unit Tests"
- 然后,您可以按照自己的方式创建测试。