- 初始化——准备一些测试前提条件。例如新建需要测试的类的实例
- 调用被测试的方法
- 验证结果——测试结果是否与预期一致
- 释放资源或删除文件(optional)
单元测试的测试重点是测试类的 方法,对于其中的 方法的具体实现不关心。
- 对于直接返回结果方法:可以用 测试框架的 语句
- 对于 类型的方法:需要利用 的测试框架,例如
TDD(Test Drived Development)
在项目初期采用TDD开发,在方法实现前,先写对应的单元测试代码,需要注意方法的Input 和 Output,不去想具体实现细节。也可以考虑方法的一些异常,各种情况的预期结果。这样会对方法的边界以及架构有更清晰的认识。
JUnit4 框架是Java中最基础的测试框架。
更多验证结果的用法,参看JUnit4 官方文档:Assertions
验证Exception需要在 注解上加上 参数,表明期望出现的异常。如果测试代码中没有抛出异常则会报错。
不过这种验证异常的方法还是有所限制的:不能验证异常中的 message,也无法验证出现异常中其他属性的值,不过 JUnit 4 提供了另外一种方式可以验证异常,可以解决这些问题。
例如在 中的两个方法 和 都需要有相同的初始化工作—— 创建 对象。而 和 可以很好地将相同的初始化和收尾工作抽象出来。
Output:
我们可以看到, 总共运行了两次,并且 并没有变,说明两次 是并行的。
和
其实在例子中 和 方法不需要在每个测试方法之前都运行一次, 标记的方法会在该类的测试方法运行前运行一遍,只会执行一次,然后在所有测试方法运行完后会运行一次 标记的方法。
不过 和 注解,标记的方法应该为静态方法。
Output:
忽略某些测试方法
有时因为一些原因,例如正式代码还没有实现,想让 JUnit 暂时不允许某些测试方法,这时就可以使用 注解,例如:
fail 方法
有时候可能需要故意让测试方法运行失败,例如在 catch 到某些异常时,这时可以使用fail方法:
Test Class:
Output:
Kotlin 语言还提供了一个 库,它定义了一些全局函数,可以在编写测试代码不用导入 ,还可以使用高阶函数作为验证语句的参数。
库提供一些全局函数,如 、 ,更多详细内容请看 Package kotlin.test。
在实际开发中,软件中是充满依赖关系的,我们会基于Dao(数据访问类)写service类,而又基于service类写操作类。
在传统的JUnit单元测试中,我们没有消除对对象的依赖。
如存在A对象方法依赖B对象方法,在测试A对象的时候,我们需要构造出B对象,这样子增加了测试的难度,或者使得我们对某些类的测试无法实现。这与单元测试的思路相违背。
而Mock这种测试可以让你无视代码的依赖关系去测试代码的有效性。
核心思想就是如果代码按设计正常工作,并且依赖关系也正常,那么他们应该会同时工作正常。
Junit 4 测试框架可以验证有直接返回值的方法,Mocking 框架可以对 方法做测试。
方法的输出结果其实是调用了另外一个方法,所以需要验证该方法是否有被调用,调用时参数是否正确。Mocking 框架可以验证方法的调用.
目前流行的 Mocking 框架有 Mockito、JMockit、EasyMock、PowerMock 等。
选择Mockito 框架的原因是:
(1)Mockito 是 Java 中最流行的 mocking 框架;
(2)Google 的 Google Sample 下的开源库中使用也是 Mockito 框架。下面介绍 Mockito 框架一些概念和用法,以及 Kotlin 中 mockito-kotlin 库的使用。
首先,需要再 中添加依赖:
然后Mockito框架的示例如下:
Mockito 还提供了 等注解来简化创建 mock 对象的工作
除了显式地调用 外,还可以使用 或者 。使用方式如下:
Stub就是把需要测试的数据塞进对象中,使用基本为:
使用 时,我们只关注于方法调用和返回结果。
到此这篇单元测试基本步骤包括(单元测试的步骤)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/te-unit/17495.html