IDEA 单元测试创建方法详解(2020.03版本亲测)

IntelliJ IDEA创建单元测试

在 Android 中,单元测试基于 JUnit,JUnit 的平面使用足以测试完全基于 Java 代码的功能。

但是,为了测试 Android 特定的功能,您需要一堆构建在 JUnit 之上的包装类。IntelliJ IDEA 简化了 Android 测试项目构建过程中的大部分任务。

1.确保你的代码是可测试的

单元测试要求源代码的编写方式使得模块之间的依赖关系可以很容易地通过模仿来消除。另外,单元测试要求功能相互隔离。

因为这个 HelloDroid 类的代码不容易测试。在进行单元测试之前,我们首先应用一个快速重构。

打开 HelloDroid 类,并选择 TapDroid 方法中引用显示消息的生成的代码部分:

以这种方式重写该 TapDroid 方法,以便它调用新创建的公共帮助方法(GetStringFor Display),如下所示:

private void TapDroid() {
counter++;
String temp = getStringForDisplay(counter);
message.setText(String.format("You touched the droid %s", temp));
}

public String getStringForDisplay(int count) {
String temp;
switch(count)
{
case 1:
temp = "once";
break;
case 2:
temp = "twice";
break;
default:
temp = String.format("%d times", count);
}
return temp;
}

该 getStringForDisplay 方法现在更容易测试,并且该 TapDroid 方法的主体已经大大简化。

2.创建一个测试模块

现在让我们创建一个新的测试模块并设置 HelloDroid 为测试模块。这可确保测试模块在包含要测试的源代码的模块上保存一个引用。

从主菜单中,选择:文件| 新增| 模块(File | New | Module)来启动“新建模块向导(New Module wizard)”。

在向导的第一页上,在左窗格中选择 Android,然后在右侧选择 Test Module:

在第二页上,指定新的模块名称,例如 Tests。保持其他字段不变。该 HelloDroid 模块被自动指定为测试模块,因为在这一点上,这是该项目中唯一的模块。

一个新节点将被添加到名为 Tests 的项目中。这个模块有它自己的 manifest 文件和和 src 目录。该 manifest 文件链接到 android.test 库以构建测试类。

新创建的模块具有在 src 文件夹中命名的 HelloDroidTest 测试文件。您可以通过添加更多的 Java 类来添加更多的测试文件,如下所示:

public class HelloDroidTest extends ActivityInstrumentationTestCase2<HelloDroid> {

public HelloDroidTest() {
super("com.example.HelloDroid", HelloDroid.class);
}
}

测试类继承自 ActivityInstrumentationTestCase2,其中 T 就是你要测试的活动的名称。

请注意,添加构造函数是必需的,因为没有为父类定义默认构造函数。

3.添加一个测试方法

在编辑器中,右键单击 HelloDroid 测试类并单击“生成(Generate)”(或者单击 Alt+Insert)。在打开的弹出菜单中,选择“测试方法(Test Method)”:

IntelliJ IDEA 创建一个名为 testName 的新的方法存根,您可以轻松地将 Name 后缀更改为上下文中更有意义的内容:

如果您使用 JUnit 3(Android 中的默认测试框架),则方法名称中 test 的前缀是必需的;使用 JUnit 4,您必须使用方法名称注释来指示给定的方法必须作为测试方法进行处理。

4.编写测试方法的逻辑

在内部,测试方法首先获取对其正在尝试测试的活动的引用,然后调用目标方法,最后将有效结果与预期结果进行比较。

将下面的代码添加到测试方法中:

public void testStringForDisplay() throws Exception {
int count = 1;
HelloDroid activity = getActivity();
String result = activity.getStringForDisplay(count);
Assert.assertEquals(result, "once");

}

断言是通过 JUnit 框架的服务实现的,需要在源文件中正确引用。当意图动作弹出来引用它时按下 Alt+Enter:

5.为测试创建一个运行/调试配置

为了运行测试,您需要创建专用的运行/调试配置。设置测试模块时会自动为您创建默认配置。

要编辑其设置,请在主菜单中选择:运行| 编辑配置(Run | Edit Configurations)并在左侧窗格中选择:“Android测试(Android Tests)”下的“测试(Tests)”:

您可以选择在模块中运行所有测试,也可以将测试限制为给定类中的方法。

6.运行测试

要运行测试,请确保在编辑器右上角的下拉列表中选择适当的运行/调试配置,然后单击其旁边的运行按钮

测试结果显示在自动激活的“运行(Run)”工具窗口的 Test Runner 标签中。如果测试成功完成,则编辑器右上角会出现一个绿色方形图标。如果有警告,图标是黄色的;如果测试失败,则是红色的。您可以点击图标获取更多详细信息。

您可以通过单击 “测试(Tests)”选项卡工具栏中的“导出测试结果(Export Test Results)”图标 ,将测试报告导出为各种格式。

到此这篇关于IDEA 单元测试创建方法详解(2020.03版本亲测)的文章就介绍到这了,更多相关IDEA 单元测试创建内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot 添加JSP 支持并附带在IDEA下创建JSP文件【测试无误】

    1添加 maven依赖 <!-- tomcat , jsp 的支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.

  • springboot+idea+maven 多模块项目搭建的详细过程(连接数据库进行测试)

    创建之前项目之前 记得改一下 maven  提高下载Pom速度 记得 setting 中要改 maven  改成 阿里云的.具体方法 网上查第一步 搭建parents 项目,为maven项目 ,不为springboot 项目 记得修改groupId 第二步 搭建多个子模块, honor-dao   honor-manager   honor-common记得创建 honor-manager 的时候 要把他的gruopId 改成com.honor.manager 这里爆红的原因是 因为 我做到后面

  • idea +junit单元测试获取不到bean注入的解决方式

    如图,刚开始报错获取不到bean因为配置文件 1.原因一: *.properties等没有值,还是用${变量的}.获取不到,于是把所有值复制到properties文件里. 2.原因二: springmvc.xml 没有某些静态资源获取报错,把src的resources下的springmvc.xml复制到test目录的resources下,删除静态资源引用. 3.原因三: 可去掉log4j配置. 补充知识:IDEA的junit单元测试Scanner输入无效 在idea的junit单元测试中用Sca

  • Flink开发IDEA环境搭建与测试的方法

    一.IDEA开发环境 1.pom文件设置 <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <encoding>UTF-8</encoding> <scala.version>2.11.12</scala.version>

  • 详解IDEA JUnit5测试套件运行错误的问题

    1.问题 在Idea 2017.3中,建立JUnit5的测试用例Test Case,同时建立JUnit4的测试套件,运行测试套件时提示出错"java.lang.Exception: No runnable methods". 2.分析 Java进行单元测试时,一般会建立多个测试用例Test Case,或者多个测试类(每个测试类包括多个测试用例),但如果需要同时运行这些测试用例,一般在JUnit4中会采用测试套件,通过运行测试套件,在套件中一次运行多个测试用例类. 参考解答: 能够使用J

  • IDEA 单元测试创建方法详解(2020.03版本亲测)

    IntelliJ IDEA创建单元测试 在 Android 中,单元测试基于 JUnit,JUnit 的平面使用足以测试完全基于 Java 代码的功能. 但是,为了测试 Android 特定的功能,您需要一堆构建在 JUnit 之上的包装类.IntelliJ IDEA 简化了 Android 测试项目构建过程中的大部分任务. 1.确保你的代码是可测试的 单元测试要求源代码的编写方式使得模块之间的依赖关系可以很容易地通过模仿来消除.另外,单元测试要求功能相互隔离. 因为这个 HelloDroid

  • jquery-mobile表单的创建方法详解

    本文实例讲述了jquery-mobile表单的创建方法.分享给大家供大家参考,具体如下: 一.注意事项 1. <form> 元素必须设置 method 和 action 属性 2. 每个表单元素必须设置唯一的 "id" 属性. 该 id 在站点的页面中必须是唯一的. 这是因为 jQuery Mobile 的单页面导航模型允许许多不同的"页面"同时呈现. 3. 每个表单元素必须有一个标记(label). 请设置 label 的 for 属性来匹配元素的 i

  • LINUX下Oracle数据库用户创建方法详解

    本文实例分析了LINUX下Oracle数据库用户创建方法.分享给大家供大家参考,具体如下: 1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户) 2)首先要打开监听器命令如下:lsnrctl start,然后sqlplus /nolog ,然后conn /as sysdba,然后startup(这一部分命令是用来打开oracle数据库) 3)查看我们常规将用户表空间放置的位置:执行如下sql: SQL> select

  • JS原型对象的创建方法详解

    本文实例讲述了JS原型对象的创建方法.分享给大家供大家参考,具体如下: 使用js的prototype属性的时候,创建对象的方式是存在优先级的 1.如果方法中存在构造方法就先使用方法中的构造方法 2.如果方法中不存在构造方法则继续查找prototype原型的构造方法 <html> <head> <TITLE>class_obj_js_class</TITLE> <script language=javaScript> function a(name

  • Android编程之数据库的创建方法详解

    本文实例讲述了Android编程之数据库的创建方法.分享给大家供大家参考,具体如下: 主java package com.itheima.createdatabase; import android.app.Activity; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; public class MainActivity exten

  • js中的面向对象之对象常见创建方法详解

    本文实例讲述了js中的面向对象之对象常见创建方法.分享给大家供大家参考,具体如下: 创建对象的几种常用方式 1.使用Object或对象字面量创建对象 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对象 1.使用Object或对象字面量创建对象 使用object var student = new Object(); student.name = "easy"; student.age = "20"; 使用字面量 var sutdent = { na

  • 利用Jasmine对Angular进行单元测试的方法详解

    前言 本文主要介绍的是关于利用Jasmine对Angular单元测试的相关内容,以下是我假定那些极少或压根没写单元测试的人准备的,因此,会白话解释诸多概念性问题,同时会结合 Jasmine 与之对应的方法进行讲解. 一.概念 Test Suite 测试套件,哪怕一个简单的类,也会有若干的测试用例,因此将这些测试用例集合在一个分类下就叫Test Suite. 而在 Jasmine 就是使用 describe 全局函数来表示,它的第一个字符串参数用来表示Suite的名称或标题,第二个方法参数就是实现

  • Oracle存储过程和存储函数创建方法(详解)

    select * from emp; -----------------存储过程------------------------ --定义 create[or replace] procedure 存储过程名称(参数名 [in]/out 数据类型)    is/as    begin --逻辑表达式  end [存储过程名称]; --定义存储过程计算年薪,并答应输出 create or replace procedure proc_salyears(v_no in number)    is  

  • 对Pycharm创建py文件时自定义头部模板的方法详解

    如下所示: # -*- coding: utf-8 -*- """ ------------------------------------------------- File Name: ${NAME} Description : Author : ${USER} date: ${DATE} ------------------------------------------------- Change Activity: ${DATE}: ----------------

  • 2020版IDEA整合GitHub的方法详解

    1.前提电脑安装好Git需要有个已经注册的GitHub帐号2.在IDEA中设置Git2.1 确保IDEA安装Git GitHub插件 2.2 在IDEA中设置Git,在File–>Setting->Version Control–>Git–>Path to Git executable选择你的git安装后的git.exe文件,然后点击Test,测试是否设置成功 2.3 在IDEA中设置GitHub,File–>Setting->Version Control–>G

随机推荐