【问题标题】:How do you do unit tests for getters and setters?您如何对 getter 和 setter 进行单元测试?
【发布时间】:2014-12-16 16:22:04
【问题描述】:

我是 tdd 和 mockito Web 框架的新手。

基本上这是类中的getter方法:

public Long getDeviceManufactureId()
{
    return deviceManufacturerId;
}

如何编写单元测试?

到目前为止,我在想这个:

dem 是类的名称

@Test
public void testGetDeviceManufactureIdreturnsDeviceManufactureId()
{
    assertEquals("Richard", dem.getDeviceManufactureId());
}

【问题讨论】:

  • 我倾向于同意 getter 和 setter “太简单而无法测试”。为此,请考虑使用 Groovy;它会自动生成它们,不涉及样板。
  • @chrylis 我的经理希望我们增加测试覆盖率,因此我认为 getter 和 setter 是一种更简单的方法......
  • @SemihEker 我明白你为什么这样做了。虽然这不是应该写的情况。我需要这样做,所以我需要一个解决方案
  • 那么这是满足指标的欺骗性方式。

标签: java unit-testing tdd


【解决方案1】:

一般来说,我们为其中包含一些逻辑的方法编写测试用例。就像可能有多个 dao 调用的服务方法一样。简单地为所有方法编写测试用例是没有意义的,并且通常会浪费构建时间(无论多么小)。所以我的意见是不要写这么琐碎的测试用例。

如果只是关于代码覆盖率,那么我确信 getter/setter 将用于其他一些对其进行测试的方法。那应该涵盖这些。但是,如果您绝对必须编写一个测试用例,那么您所做的似乎很好。如果实例变量永远不能为 null,您也可以断言 not null。

【讨论】:

  • 我会考虑仅在其中存在一些重要逻辑时才测试 setter/getter。
【解决方案2】:

在容器类不仅仅是 POJO 的某些罕见场景中,可能需要测试 getter 和 setter。

如果是这种情况,我建议创建一个单独的 TestSuite,专用于此类实例变量,每个测试用例的命名约定如下:

TestGetVariableNameClassName
TestSetVariableNameClassName

需要整理维护等测试数据并不棘手。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 2017-06-03
    • 2020-08-23
    相关资源
    最近更新 更多