如何在 Android Studio 1.1 中运行简单的 JUnit4 测试?

我有一个显示“Hello World”的Android项目。它是从Android Studio的“空白活动”模板创建的。

然后,我在应用程序包中添加/创建一个新的 java 类(具有我的活动的同一包)。我称之为形状,并添加一个简单的构造函数

public class Shape {
    public Shape(int i){
        if (i==0){
            throw new IllegalArgumentException("Cant have 0");
        }
    }
}

伟大。现在我有一个完全没有接触Android的类,我想对它进行单元测试。接下来我该怎么办?

这就是我的问题停止的地方。下面我将介绍我尝试过的内容。

请注意,我以前从未在Android或Java中测试过。请原谅我的“菜鸟”错误。

  1. 在形状中.java我转到“导航”>“测试”
  2. 点击回车键选择“创建新测试”
  3. 获取此弹出窗口,然后选择 JUNIT4。

enter image description here

  1. 然后我点击修复按钮修复找不到的库
  2. 我收到此弹出窗口

enter image description here

  1. 我不太确定要选择什么,所以我选择了默认/突出显示。
  2. 我写我的测试

    package com.eghdk.getjunit4towork;
    
    import org.junit.Test;
    
    import static org.junit.Assert.*;
    
    public class ShapeTest {
        @Test(expected = IllegalArgumentException.class)
        public void testShapeWithInvalidArg() {
            new Shape(0);
        }
    }
    
  3. 在这一点上,我不太确定如何运行我的测试,但尝试这样做:enter image description here

  4. 我在运行时收到这些错误

    错误:(3, 17) Gradle: 错误: package org.junit 不存在
    错误:(5, 24) Gradle: 错误: package org.junit 不存在
    错误:(8, 6) Gradle: 错误: 找不到符号类 Test


答案 1

从Android Studio 1.1开始,就有了(实验性的)单元测试支持。该页面中的几句话:

您必须在 android 模块的 build.gradle 文件中指定测试依赖项。例如:

dependencies {
  testCompile 'junit:junit:4.12'
  testCompile "org.mockito:mockito-core:1.9.5"
}

若要在 AS 中使用单元测试支持,必须执行以下步骤:

  1. 更新 build.gradle 以使用 android gradle 插件版本 1.1.0-rc1 或更高版本(在 build.gradle 文件中手动或在 UI 中的文件>项目结构)

  2. 将必要的测试依赖项添加到 app/build.gradle(见上文)。

  3. 在“设置”中启用“设置”>“>”实验性“中的单元测试功能。

  4. 同步您的项目。

  5. 打开“构建变体”工具窗口(左侧),并将测试工件更改为“单元测试”。

  6. 为测试源代码创建一个目录,即src/test/java。可以从命令行或使用“项目”工具窗口中的“项目”视图执行此操作。此时,新目录应以绿色突出显示。注意:测试源目录的名称由 gradle 插件根据约定确定。

  7. 创建测试。为此,您可以打开一个类,右键单击其名称,然后选择“转到>测试”。添加一些测试用例。
  8. 右键单击新的测试类或方法,然后选择“运行...”。
  9. (可选)您可以通过直接使用 Gradle 来缩短编译时间。为此,请转到“运行”菜单,然后选择“编辑配置”。在那里,找到默认的JUnit模板,删除启动前的“Make”步骤,并添加“Gradle感知make”步骤(将任务名称留空)。

重要的是要知道有两种测试类型:和 普通 。androidTesttest

  • androidTest主要用于在模拟器或设备上运行的测试,例如检测测试。从命令行中,您可以使用来运行这些。./gradlew connectedCheck
  • test适用于你不想在设备上运行的测试,例如你编写的单元测试。运行这些测试。./gradlew test

如引文中所述,您可以通过更改测试工件在 Android Studio 之间切换。androidTesttest

当然,最好不要在设备或仿真器上运行测试,因为这会大大加快测试过程。借助新的实验单元测试支持,您无需使用设备即可访问存根的 Android API。这使您可以将更多测试从 移动到 。androidTesttest


答案 2

对于Android Studio 1.2或更高版本,我包括这个答案,因为这是Google的第一个排名之一,这是一个关于如何使用Android Studio设置单元测试的优秀且非常容易遵循的教程,这是链接:https://io2015codelabs.appspot.com/codelabs/android-studio-testing#1

在浪费了2个小时尝试运行测试之后,我终于用上面的链接做了它,希望它对你和我一样有用。


推荐