4

最近我更深入地进行单元测试,我有点卡住了。

例子。我们有这样的方法:

boolean isCheckOutChecked(NmCommandBean clientData) {
    return "checkOut".equalsIgnoreCase(clientData.getTextParameter("checkOut"));
}

其中大部分取决于clientData返回的内容。有两种可能:

  1. 如果找不到文本参数,则返回 null
  2. 如果有则返回字符串值


嗯......我已经创建了两个测试,但想知道这样的测试是否有任何意义?在这种情况下你会做什么?

@Test
void shouldReturnTrueWhenCheckoutIsChecked() {
    doReturn("checkOut").when(clientData).getTextParameter("checkOut");

    boolean checkOutChecked = formProcessor.isCheckOutChecked(clientData);
    assertTrue(checkOutChecked);
}

@Test
void shouldReturnFalseWhenCheckoutIsNotChecked() {
    doReturn(null).when(clientData).getTextParameter("checkOut");

    boolean checkOutChecked = formProcessor.isCheckOutChecked(clientData);
    assertFalse(checkOutChecked);
}
4

2 回答 2

1

既然你已经硬编码了checkOut我会说是的,我们在我们的产品中有这种测试——称为“安全网”测试,以防有人在 UI 端更改该参数,我们希望在测试中失败,而不是在真实代码中.

于 2018-07-30T12:24:57.877 回答
0

在有条件/分支的地方,进行单元测试是非常有用的,这样所有的基本场景都包含在单元测试用例本身中。这减少了反馈时间(无需部署应用程序来测试条件)并有助于加快开发速度。

于 2018-07-30T12:33:01.067 回答