java - 当我使用 Mockito 测试 get 方法时,是否超出了 get 方法的范围?

标签 java unit-testing mockito

我正在使用 Mockito 测试一种方法。该方法本身很简单。这是一个“get”方法,名为 getPeriod()。但它也存在一些问题。

故事是这样的:

我的 Java 类有一个名为 start() 的方法,它从外部系统收集一些配置数据,并根据收集到的数据设置一些变量。其中一个变量是“周期”。如果该方法无法从外部系统收集数据(由于通信故障等),它将为这些变量设置默认值。

那么,有两种情况

  1. 数据是从外部找到的
  2. 使用默认数据

但是,当我测试 getPeriod() 时,这些情况重要吗?以下内容不足以针对某个任意常量 JOB_PERIOD 测试该方法吗?

testgetPeriod {
   assertThat(comp.getPeriod(), equalTo(JOB_PERIOD));
}

问题是,就设置周期而言,控制是通过start()方法来实现的。那么,我是否只在测试 start() 方法时考虑这两种情况,并让 getPeriod() 进行像上面代码一样简单的单行测试?

最佳答案

您列出的原因并不是测试 getPeriod 的原因。

相反,您需要一个或多个单元测试来模拟外部通信故障并验证周期值是否已正确设置为默认数据(这些测试似乎可能包括对 getPeriod 的调用)。

您还需要一个或多个单元测试来模拟成功获取周期数据并验证周期值是否设置正确(同样,这些测试可能包括对 getPeriod 的调用)。

关于java - 当我使用 Mockito 测试 get 方法时,是否超出了 get 方法的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40618539/

相关文章:

java 。尝试仅计算正数的平均值,如果未输入正数也会显示一条消息

java - 对于循环错误,我该如何解决这个问题?

java - 在单元测试中使用反射是不好的做法吗?

Python 单元测试未运行

android - initMocks 上的 Mockito AbstractMethodError

java - doNothing.When for private void 方法本身正在调用方法

java - 我必须从java程序调用.sql文件

java - 在多模块 Maven 项目中将 @project.version@ ​​与 Liquibase 结合使用

c# - 模拟对象的一种方法

java - 仅验证少数元素的单元测试