gpt4 book ai didi

java - 每个案例一个单元或每个断言一个单元

转载 作者:行者123 更新时间:2023-12-02 05:16:25 27 4
gpt4 key购买 nike

在单元测试中,从支持成本的角度来看,我应该为每个案例编写一个单元还是每个断言编写一个单元?我有以下代码

void methodUnderTest(Resource resource) {
if(!resource.hasValue()) {
Value value = valueService.getValue(resource);
resource.setValue(value);
}

// resource.setLastUpdateTime(new Date()); // will be added in future
db.persist(resource);
email.send(resource);
}

注释行将在不久的将来添加,我想更新单位会花费多少。

据我所知,有两种方法可以测试此代码。

  1. 编写 2 个传递有值和无值资源的单元。在这两个测试中,验证是否调用了 db.persist 和 email.send。添加 LastUpdateTime 后,我必须更新两个测试以验证属性是否已设置。

  2. 编写单独的单元测试:一个检查 db.persist 是否被调用,另一个检查 email.send,第三个和第四个检查是否有值的资源。添加 LastUpdateTime 后,我只需编写新单元。

我喜欢第二种方式,因为我喜欢这样的想法:我不必接触工作单元。但这可能会出现大量代码重复,因为实际上所有 4 个测试都执行相同的操作,只是使用不同的断言。

从“每个单元测试只有一个概念”的角度来看,第一种方法看起来更正确。但这样的测试不是很难维护吗?添加新的东西我总是不得不修改所有现有的测试,这听起来不太好。

这里有我应该遵循的最佳实践吗?

最佳答案

我建议您将所有测试的通用内容放入测试的 setUp() 中,每个单元测试只有一个断言,就像您的第二种测试方式一样。

当您添加新的代码行时,您只需使用一个断言再添加一个测试用例。

不修改现有测试,不重复代码。

关于java - 每个案例一个单元或每个断言一个单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26913194/

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