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

带有JUnit4测试的Android Studio 1.0.2

卢才艺
2023-03-14

我目前使用的是Android Studio版本1.0.2。我已经创建了几个类,并让Android Studio为我生成了一些JUnit4测试框架。当我生成这些测试时,它通知我在模块中找不到JUnit4库。有一个按钮说“修复”,所以我点击了它,它允许我创建一个新的测试。我也检查了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);
    }
}

错误:任务“:app:DexDebugTest”执行失败。

com.android.ide.common.internal.loggederRoreXception:无法运行命令:C:\users\username\downloads\adt-bundle-windows-x86_64-20140624\sdk\build-tools\21.1.1\dx.bat-dex-no-optimize-output C:\users\username\documents\github\projectname\app\build\mediumates\dexx\tex\test\debug-dexception:多个dex文件定义lorg/hamcrest/description;在com.android.dx.merge.dexmerger.readsortabletypes(dexmerger.java:596)com.android.dx.merge.dexmerger.getsortedtypes(在com.android.dx.command.dexer.main.runmonodex(main.java:302)在com.android.dx.command.dexer.main.run(main.java:245)在com.android.dx.command.dex.main.main(main.java:214)在com.android.dx.command.main.main(main.java:106)

有没有一个解决方案,有人可以告诉我或描述采取什么步骤?我还想知道是否有其他方法可以添加junit4库。

共有1个答案

贺乐意
2023-03-14

我也遇到过类似的问题,并通过从JUnit-4x中排除hamcrest-core模块来解决这个问题。

androidTestCompile('junit:junit:4.10') {
    exclude module: 'hamcrest-core'
}
androidTestCompile 'org.hamcrest:hamcrest-all:1.3'
 类似资料:
  • 主要内容:1 Junit分类测试的介绍,2 在Maven中进行分类测试,3 在Gradle中进行分类测试,4 在SBT中进行分类测试,5 分类测试的典型用法1 Junit分类测试的介绍 从给定的一组测试类中,类别运行器仅运行用@IncludeCategory批注指定的类别或该类别的子类型进行批注的类和方法。类或接口都可以用作类别。子类型有效,因此,如果您说@IncludeCategory(SuperClass.class),则会运行标记为@Category({SubClass.class})的测

  • 主要内容:1 概述,2 @Test注释上的超时参数(适用于测试方法),3 超时规则(适用于测试类中的所有测试用例),4 使用JUnit Foundation进行全局超时管理1 概述 在此示例中,我们将了解测试完成所花费的时间是否超过定义的“timeout”,将抛出TestTimedOutException并将测试标记为失败。 “runaway”或花费太长时间的测试可能会自动失败。有两种方法可以实现此行为: @Test注释上的超时参数(适用于测试方法) 使用JUnit Foundation进行全局

  • 主要内容:1 概述,2 JUnit 4异常测试示例,3 结论1 概述 在本指南中,我们将学习如何测试具有意外条件的方法引发的异常。 2 JUnit 4异常测试示例 有三种方法可以处理异常。 预期的异常 ExpectedException规则 Try/Catch Idiom 2.1 预期的异常 您如何验证代码是否按预期抛出异常?验证代码能否正常完成很重要,但是确保代码在异常情况下的行为也很重要。例如: 此代码应引发IndexOutOfBoundsExcept

  • 主要内容:1 概述,2 创建简单的Maven项目,3 项目包装结构,4 更新pom.xml文件中的JUnit依赖关系,5 创建LoginService.java和LoginServiceTest.java,,6.创建UserService.java和UserServiceTest.java,7 创建测试套件,8 结论1 概述 在本指南中,我们将学习如何一次运行多个测试类。将Suite用作运行程序可以使您手动构建一个包含许多类测试的套件。它等效于JUnit 3.8.x静态Test suite()方

  • 主要内容:1 参数化测试的介绍,2 使用@Parameter进行字段注入而不是构造函数,3 使用单个参数进行测试,4 识别单个测试用例1 参数化测试的介绍 自定义流道参数化实现参数化测试。运行参数化测试类时,将为测试方法和测试数据元素的叉积创建实例。 例如,要测试斐波那契函数,请编写: FibonacciTest的每个实例都将使用二元参数构造函数和方法中的数据值构造 @Parameters 。 2 使用@Parameter进行字段注入而不是构造函数 也可以将数据值直接注入字段中,而无需使用@Pa

  • 主要内容:1 概述,2 测试执行顺序,3 例子,4 结论1 概述 在本指南中,我们将学习如何按顺序执行测试。默认情况下,JUnit以任何顺序执行测试。 2 测试执行顺序 要更改测试执行顺序,只需使用@FixMethodOrder注释测试类并指定可用的MethodSorters之一: @FixMethodOrder(MethodSorters.JVM):按照JVM返回的顺序保留测试方法。此顺序可能因运行而异。 @FixMethodOrder(Method