2025年单元测试基本步骤包括(单元测试的步骤)

单元测试基本步骤包括(单元测试的步骤)初始化 准备一些测试前提条件 例如新建需要测试的类的实例 调用被测试的方法 验证结果 测试结果是否与预期一致 释放资源或删除文件 optional 单元测试的测试重点是测试类的 方法 对于其中的 方法的具体实现不关心 对于直接返回结果方法 可以用 测试框架的 语句 对于 类型的方法 需要利用 的测试框架 例如 TDD Test Drived Development

大家好,我是讯享网,很高兴认识大家。



  1. 初始化——准备一些测试前提条件。例如新建需要测试的类的实例
  2. 调用被测试的方法
  3. 验证结果——测试结果是否与预期一致
  4. 释放资源或删除文件(optional)

单元测试的测试重点是测试类的 方法,对于其中的 方法的具体实现不关心。

  1. 对于直接返回结果方法:可以用 测试框架的 语句
  2. 对于 类型的方法:需要利用 的测试框架,例如

TDD(Test Drived Development)
在项目初期采用TDD开发,在方法实现前,先写对应的单元测试代码,需要注意方法的Input 和 Output,不去想具体实现细节。也可以考虑方法的一些异常,各种情况的预期结果。这样会对方法的边界以及架构有更清晰的认识。

JUnit4 框架是Java中最基础的测试框架。

 

讯享网

更多验证结果的用法,参看JUnit4 官方文档:Assertions

验证Exception需要在 注解上加上 参数,表明期望出现的异常。如果测试代码中没有抛出异常则会报错。

不过这种验证异常的方法还是有所限制的:不能验证异常中的 message,也无法验证出现异常中其他属性的值,不过 JUnit 4 提供了另外一种方式可以验证异常,可以解决这些问题。

讯享网

例如在 中的两个方法 和 都需要有相同的初始化工作—— 创建 对象。而 和 可以很好地将相同的初始化和收尾工作抽象出来。

 

Output:

讯享网

我们可以看到, 总共运行了两次,并且 并没有变,说明两次 是并行的。


其实在例子中 和 方法不需要在每个测试方法之前都运行一次, 标记的方法会在该类的测试方法运行前运行一遍,只会执行一次,然后在所有测试方法运行完后会运行一次 标记的方法。
不过 和 注解,标记的方法应该为静态方法。

 

Output:

讯享网

忽略某些测试方法

有时因为一些原因,例如正式代码还没有实现,想让 JUnit 暂时不允许某些测试方法,这时就可以使用 注解,例如:

 

fail 方法

有时候可能需要故意让测试方法运行失败,例如在 catch 到某些异常时,这时可以使用fail方法:

讯享网

JUnit 4 中的 可以达到同样的效果, 在测试类中声明后,测试类中的所有测试方法都要遵守Rule。
可以很方便地添加额外代码或者重新定义测试行为。Junit 4 中自带的 有 、 、 、 、 、 、 、,其中 可以验证异常的详细信息, 可以指定测试方法的最大运行时间。
Timeout 示例:

 

如上述代码所示,每个 的运行时间都不会长于 1 秒钟。
自定义Rule示例: CustomRule

讯享网

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 框架生效的基础,有两种方式 和 。
对象的属性和方法都是默认的,例如返回 、默认原始数据类型值(0 对于
/ )或者空的集合,简单来说只有类的空壳子——假执行
对象的方法是真实的方法——真执行,不过会额外记录方法调用信息,所以也可以验证方法调用。

讯享网

Mockito 还提供了 等注解来简化创建 mock 对象的工作

 

除了显式地调用 外,还可以使用 或者 。使用方式如下:

讯享网

Mockito 中可以很方便地验证 对象或 对象的方法调用,通过 方法即可:
验证执行次数,参数也必须一致

 

Stub就是把需要测试的数据塞进对象中,使用基本为:

讯享网

使用 时,我们只关注于方法调用和返回结果

 

小讯
上一篇 2025-05-10 08:54
下一篇 2025-04-22 08:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/196006.html