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'

我遇到了同样的问题。 我是通过以下方式解决的:

  1. 打开 window :Build Variants
  2. 在"Test Artfact", select "Unit Tests"
  3. 然后,您可以按照自己的方式创建测试。