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

EGH*_*HDK 22 java junit android unit-testing android-studio

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

然后我在我的应用程序包中添加/创建一个新的java类(与我的活动相同的包).我称之为Shape并添加一个简单的构造函数

public class Shape {
    public Shape(int i){
        if (i==0){
            throw new IllegalArgumentException("Cant have 0");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

请注意,我以前从未在Android或Java中测试过.对不起"菜鸟"的错误.

  1. 在Shape.java中,我转到"导航">"测试"
  2. 按Enter键选择"创建新测试"
  3. 获取此弹出窗口,然后选择JUNIT4.

在此输入图像描述

  1. 然后我点击修复按钮修复未找到的库
  2. 我得到这个弹出窗口

在此输入图像描述

  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);
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 此时,我不确定如何运行我的测试,但尝试这样做: 在此输入图像描述

  4. 我跑步时遇到这些错误

    错误:(3,17)Gradle:错误:包org.junit不存在
    错误:(5,24)Gradle:错误:包org.junit不存在
    错误:(8,6)Gradle:错误:找不到符号课堂考试

nha*_*man 34

自Android Studio 1.1起,就有(实验性)单元测试支持.该页面的几个引用:

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

dependencies {
  testCompile 'junit:junit:4.12'
  testCompile "org.mockito:mockito-core:1.9.5"
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

  3. 在Settings> Gradle> Experimental中启用单元测试功能.

  4. 同步您的项目.

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

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

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

重要的是要知道有两种测试类型:androidTest和普通test.

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

正如帖所说,你之间进行切换androidTest,并test通过改变测试工件Android Studio中.

当然,优选的是不运行的设备或仿真器上的测试,因为这加速了测试过程很多.通过新的实验单元测试支持,您可以在不使用设备的情况下访问存根的Android API.这允许您从移动更多的测试androidTesttest.