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

 更新时间:2020年10月08日 09:08:36   作者:Hi丶ImViper  
这篇文章主要介绍了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<HelloDroid> {

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 单元测试创建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Java实现记事本功能

    基于Java实现记事本功能

    这篇文章主要为大家详细介绍了基于Java实现记事本功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Java SpringBoot集成ChatGPT实现AI聊天

    Java SpringBoot集成ChatGPT实现AI聊天

    ChatGPT已经组件放开了,现在都可以基于它写插件了,也许可以用它结合文字语音开发一个老人小孩需要的智能的说话陪伴啥的,这篇文章就介绍SpringBoot结合ChatGPT实现AI聊天感兴趣的同学可以借鉴一下
    2023-04-04
  • Spring框架十一种常见异常的解决方法汇总

    Spring框架十一种常见异常的解决方法汇总

    今天小编就为大家分享一篇关于Spring框架十一种常见异常的解决方法汇总,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 分析xxljob登入功能集成OIDC的统一认证

    分析xxljob登入功能集成OIDC的统一认证

    这篇文章主要为大家介绍分析xxljob登入功能集成OIDC的统一认证的详解说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • SpringBoot+fileUpload获取文件上传进度

    SpringBoot+fileUpload获取文件上传进度

    这篇文章主要为大家详细介绍了SpringBoot+fileUpload获取文件上传进度,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • ShardingSphere-Proxy5搭建使用过程分析

    ShardingSphere-Proxy5搭建使用过程分析

    ShardingSphere-Proxy是跨语言的数据库代理服务端,主要用来处理:分表、分库、读写分离 等,这篇文章主要介绍了ShardingSphere-Proxy5搭建使用过程,需要的朋友可以参考下
    2022-10-10
  • 关于ReentrantLock的实现原理解读

    关于ReentrantLock的实现原理解读

    这篇文章主要介绍了关于ReentrantLock的实现原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • AI算法实现五子棋(java)

    AI算法实现五子棋(java)

    这篇文章主要为大家详细介绍了AI算法实现五子棋,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Java求出任意数字的各个位数之和方式

    Java求出任意数字的各个位数之和方式

    这篇文章主要介绍了Java求出任意数字的各个位数之和方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • java之阻塞队列BlockingQueue解析

    java之阻塞队列BlockingQueue解析

    这篇文章主要介绍了java之阻塞队列BlockingQueue解析,阻塞队列是一种线程安全的数据结构,用于在多线程环境下进行数据交换,它提供了一种阻塞的机制,当队列为空时,消费者线程将被阻塞,直到队列中有数据可供消费,需要的朋友可以参考下
    2023-10-10

最新评论