2019-go-11

首先看看 go开发当中的测试

1
2
3
4
5
6
7
8
9
10
11
12
13
// main.go

package main

import "fmt"

func Add(x, y int) int {
return x+y
}

func main() {
fmt.Println(Add(1, 2))
}
1
2
3
4
5
6
7
8
9
10
11
12
13

// main_test.go

package main

import "testing"

func TestAdd(t * testing.T) {
sum := Add(1, 2)
if sum != 3 {
t.Error("Add 1 and 2 result is not 3!!!")
}
}

命令运行

go test main_test.go main.go -v -cover

因为以前补过单元测试什么的

在此记录一下覆盖率

  • 语句覆盖
  • 判定(分支)覆盖 增加false的情况
  • 判定/条件覆盖
  1. 语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每一个语句至少执行一次,其覆盖标准无法发现判定中逻辑运算的错误;
  2. 判定覆盖是指选择足够的测试用例,使得运行这些测试用例时,每个判定的所有可能结果至少出现一次,但若程序中的判定是有几个条件联合构成时,它未必能发现每个条件的错误;
  3. 条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支;
  4. 判定/条件覆盖是使判定中每个条件的所有可能结果至少出现一次,并且每个判定本身的所有可能结果也至少出现一次;
  5. 条件组合覆盖是使每个判定中条件结果的所有可能组合至少出现一次,因此判定本身的所有可能解说也至少出现一次,同时也是每个条件的所有可能结果至少出现一次;
  6. 路径覆盖是每条可能执行到的路径至少执行一次;

其中语句覆盖是一种最弱的覆盖,判定覆盖和条件覆盖比语句覆盖强,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖和语句覆盖,条件组合覆盖是除路径覆盖外最强的,路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。