当前位置:   article > 正文

单元测试标准_代码走查 单元测试 单元测试依据什么标准

代码走查 单元测试 单元测试依据什么标准

一、基本准则

1、自动化的

单元测试应该能够自动地运行,从准备数据到执行测试到检查结果这一整个过程都不需要人工干预。

首先,调用测试的过程必须是自动化的,不需要任何人工干预,例如人工输入参数值或回答YES/NO。对于测试所需要的任何预设条件(例如创建一个临时文本文件并输入指定内容)等等,都应该成为单元测试自身的一个自动化组成部分。配合自动化构建工具,能够做到一键执行整个项目的全部单元测试并生成测试报告。

另一方面,检查测试结果也应该是自动化的,测试必须能够自己决定它是通过了还是失败了,而不需要人工确认。例如你要测试一个加密函数是否正确,你不应该让测试打印出加密结果,然后人工核对输出字符串和我们期望的加密后的字符串是否一样,而是由测试本身来断言二者是否相等

  1. func Calc256(name string) (string, error) {
  2. hasher := sha256.New()
  3. readFile, err := os.OpenFile(name, os.O_RDONLY, 0644)
  4. if err != nil {
  5. return "", err
  6. }
  7. defer readFile.Close()
  8. buf := make([]byte, 4096)
  9. for {
  10. n, err := readFile.Read(buf)
  11. if err == io.EOF {
  12. break
  13. }
  14. hasher.Write(buf[:n])
  15. }
  16. return hex.EncodeToString(hasher.Sum(nil))
  17. }
  18. //test
  19. func Test_Calc256_1(t *testing.T) {
  20. file := "./calc256.txt"
  21. sha256 := "6cbdc1f9d008f7273484e63379fdadbd6b654de6"
  22. sha256Calc, err := Calc256(file)
  23. assert.Equal(t, sha256, sha256Calc)
  24. assert.Equal(t, nil, err)
  25. }

2、彻底的
好的单元测试应该覆盖了被测工作单元的每一个分支执行路径,每一个可能抛出的异常,甚至每一行代码(除了哪些getXXX()和setXXX()等极端简单,不包含逻辑的方法)。如果代码中有if...else...,你不能只是测试if这个分支,而不测试else这个分支。如果使用了switch语句,同样要测试到每一个case,以及最后的default

  1. func Test_Calc256_2(t *testing.T) {
  2. file := "./not_exists.txt"
  3. sha256 := ""
  4. sha256Calc, err := Calc256(file)
  5. assert.Equal(t, sha256, sha256Calc)
  6. assert.Equal(t, PathError, err)
  7. }

 

3、可重复的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/785384
推荐阅读
相关标签
  

闽ICP备14008679号