热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

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

这篇文章主要介绍了IDEA单元测试创建方法详解(2020.03版本亲测),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

IntelliJ IDEA创建单元测试

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

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

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

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

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

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

IntelliJ IDEA创建单元测试

以这种方式重写该 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:

IntelliJ IDEA创建单元测试

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

IntelliJ IDEA创建单元测试

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

IntelliJ IDEA创建单元测试

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

public class HelloDroidTest extends ActivityInstrumentationTestCase2 {

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

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

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

3.添加一个测试方法

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

IntelliJ IDEA创建单元测试

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

IntelliJ IDEA创建单元测试

如果您使用 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:

IntelliJ IDEA创建单元测试

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

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

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

IntelliJ IDEA创建单元测试

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

6.运行测试

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

IntelliJ IDEA创建单元测试

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

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

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


推荐阅读
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • Unity编辑器插件:NGUI资源引用检测工具
    本文介绍了一款基于NGUI的资源引用检测工具,该工具能够帮助开发者快速查找和管理项目中的资源引用。其功能涵盖Atlas/Sprite、字库、UITexture及组件的引用检测,并提供了替换和修复功能。文末提供源码下载链接。 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
  • SPSS操作指南:双变量相关性分析的详细步骤
    本教程将详细介绍如何使用IBM SPSS Statistics进行双变量相关性分析。通过实例演示,帮助读者理解变量间的关系及其统计意义。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 如何在CAD查看器中同时打开并对比两张DWG图纸
    本文将详细介绍如何使用专业的CAD查看软件,如迅捷CAD看图,来同时打开和对比两张DWG格式的CAD图纸。无论是在设计审核还是项目管理中,掌握这一技能都能显著提高工作效率。 ... [详细]
  • 编写了几个500行左右代码的程序,但基本上解决问题还是面向过程的思维,如何从问题中抽象出类,形成类的划分和设计,从而用面向对象的思维解决问题?有这方面的入门好书吗?最好是结合几个具体的案例分析的 ... [详细]
  • Qt QTableView 内嵌控件的实现方法
    本文详细介绍了在 Qt QTableView 中嵌入控件的多种方法,包括使用 QItemDelegate、setIndexWidget 和 setIndexWidget 结合布局管理器。每种方法都有其适用场景和优缺点。 ... [详细]
  • Ulysses Mac v29:革新文本编辑与写作体验
    探索Ulysses Mac v29,这款先进的纯文本编辑器为Mac用户带来了全新的写作和编辑环境。它不仅具备简洁直观的界面,还融合了Markdown等标记语言的最佳特性,支持多种格式导出,并提供强大的组织和同步功能。 ... [详细]
  • 本文详细介绍了Vim编辑器的三种主要模式及其常用命令,帮助用户更好地掌握这一强大的文本编辑工具。 ... [详细]
  • 解决Windows 10开机频繁自检问题的实用方法
    许多用户在使用Windows 10系统时,经常会遇到开机时自动进行磁盘检查的情况。这不仅影响了开机速度,还可能带来不必要的麻烦。本文将详细介绍如何通过简单的注册表修改来避免每次开机时的磁盘自检,提升系统启动效率。 ... [详细]
  • 本文详细介绍了流编辑器sed中的G、H、g、h命令,探讨了它们的工作原理及应用场景。通过实例解析和图解分析,帮助读者掌握这些高级命令的使用方法。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • 本文介绍了解决Oracle 10G数据库中ORA-12541 TNS: no listener错误的详细步骤。该错误通常发生在监听器服务未正确启动或配置不当的情况下,文章将指导您通过检查服务状态、配置注册表和启动监听器来解决问题。 ... [详细]
  • 在安装 SQL Server 时,选择混合验证模式可以提供更高的灵活性和管理便利性。如果您已经安装了 SQL Server 并使用单一的 Windows 身份验证模式,可以通过以下步骤将其更改为混合验证模式。 ... [详细]
author-avatar
用户geafr1kx8g
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有