登录
首页 >  Golang >  Go问答

应该对单元测试覆盖多少种情况进行测试?

来源:stackoverflow

时间:2024-02-14 08:48:23 245浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《应该对单元测试覆盖多少种情况进行测试?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

假设有一个函数:

type config struct {
    percent float64
    flat    float64
}

func calculate(c *config, arrayofdata *arrayofdata) float64 {
    result := 0.0
    for _, data := range arrayofdata {
        value1 = data * percent
        value2 = flat
        result += math.min(value1, value2)
    }
    return result
}

这个简单的计算函数只是根据 flat 值或 percent 中较低者计算每个 dataresult。并将它们聚合起来。

如果我要写测试,你会怎么做???

我是否必须对每个微不足道的场景进行多次测试?

说当 value1 < value2 ?? testcalculate/correctvalue_flatvaluelessthanpercentvalue

说当 value1 > value2 ?? testcalculate/correctvalue_flatvalueequaltopercentvalue

检查每个数据是否添加了平铺?那么对于arrayofdata的3个内容,result = 3*config.flat?? testcalculate/correctvalue_flatvalueperdata

所有这些看起来都很琐碎,可以简单地组合成一个测试。推荐的方式是什么?

就像说测试在哪里

config { percent: 1, flat: 20}

然后将 arrayofdata 放在每个元素检查上面写入的每种情况之一的位置

arrayofdata: {
    1, // 1*percent < flat
    40, // 40*percent > flat
}

如果我们将这些值相加,结果将是正确的,因此您已经检查了 ararrayofdata 中存在多个元素的情况。

这是更好的方法吗?一项测试,但结合了细节。 并对其他情况进行单独测试,例如 arrayofdata 中的零元素等。


正确答案


我建议遵循 Clean Code, by Martin 中的常见做法。特别讨论的两个准则是“每个测试一个断言”和“每个测试一个概念”。

当我们断言测试超过 1 个场景并且事情开始失败时,很难找出哪一部分不再通过。当发生这种情况时,无论如何,您最终都会将该单元测试分成三个单独的测试。

不妨从 3 个单独的测试开始,只要保持测试干净且富有表现力,这样如果几个月后你再回来,你就可以弄清楚哪个单元测试在做什么:)

终于介绍完啦!小伙伴们,这篇关于《应该对单元测试覆盖多少种情况进行测试?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>