gpt4 book ai didi

unit-testing - 如何将 "One Assertion Per Test"应用于 OR 关系条件

转载 作者:行者123 更新时间:2023-12-04 05:15:19 25 4
gpt4 key购买 nike

断言中的“每个测试一个断言”是公认的。像下面这样写断言是不好的:

  Assert((foo != null) && (bar != null));

更好的选择是:
  Assert(foo != null);
Assert(bar != null);

问题是如果断言是:
  Assert((foo == null) || (foo.length == 0));

关系是 OR 而不是 AND。

有没有办法在保持逻辑的同时做出“每个测试一个断言”?

最佳答案

该指南背后的想法是在一次测试中只测试一个合乎逻辑的事物(在某些情况下可能归结为 少数 断言)。因此,如果测试失败,您就会知道失败的确切原因,并且可以快速进入特定的代码块。借用 this page 的一个例子,如果以下测试失败,我知道在地址类型中如何提取/确定国家/地区有问题。

public void testCountry() throws Exception {
assertEquals("COUNTRY", anAddress.getCountry());
}

将此与具有多个断言的测试版本进行比较,它可能因多种原因而失败(除非您使用有用的断言消息),您需要 调试测试 (糟糕!)。

我需要看看你的完整测试。从它所看到的情况来看,您似乎正在检查集合中是否存在未找到的场景。在这种情况下,建议返回一个空集合,以便客户端不必检查 null。由于您的测试也是一个客户端,它的生活也变得更简单: Assert.AreEqual (0, foo.length)

关于unit-testing - 如何将 "One Assertion Per Test"应用于 OR 关系条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/943189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com