赞
踩
单元测试应该能够自动地运行,从准备数据到执行测试到检查结果这一整个过程都不需要人工干预。
首先,调用测试的过程必须是自动化的,不需要任何人工干预,例如人工输入参数值或回答YES/NO。对于测试所需要的任何预设条件(例如创建一个临时文本文件并输入指定内容)等等,都应该成为单元测试自身的一个自动化组成部分。配合自动化构建工具,能够做到一键执行整个项目的全部单元测试并生成测试报告。
另一方面,检查测试结果也应该是自动化的,测试必须能够自己决定它是通过了还是失败了,而不需要人工确认。例如你要测试一个加密函数是否正确,你不应该让测试打印出加密结果,然后人工核对输出字符串和我们期望的加密后的字符串是否一样,而是由测试本身来断言二者是否相等
- func Calc256(name string) (string, error) {
- hasher := sha256.New()
- readFile, err := os.OpenFile(name, os.O_RDONLY, 0644)
- if err != nil {
- return "", err
- }
- defer readFile.Close()
- buf := make([]byte, 4096)
- for {
- n, err := readFile.Read(buf)
- if err == io.EOF {
- break
- }
- hasher.Write(buf[:n])
- }
- return hex.EncodeToString(hasher.Sum(nil))
- }
-
- //test
- func Test_Calc256_1(t *testing.T) {
- file := "./calc256.txt"
- sha256 := "6cbdc1f9d008f7273484e63379fdadbd6b654de6"
- sha256Calc, err := Calc256(file)
- assert.Equal(t, sha256, sha256Calc)
- assert.Equal(t, nil, err)
- }

- func Test_Calc256_2(t *testing.T) {
- file := "./not_exists.txt"
- sha256 := ""
- sha256Calc, err := Calc256(file)
- assert.Equal(t, sha256, sha256Calc)
- assert.Equal(t, PathError, err)
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。