Day20-Go测试(testing)

前言

许多程序语言在主程序写好後,还需要对程序进行测试,这时就需要写测试的档案。在 Go 语言中,测试框架已经有内建套件(testing)了,不需要在选择框架或是安装後第三方套。

go test

今天写好了程序後,如果你需要测试的档案名称为 stat.go,那麽需要新增一个档案,这档案名称为档案名後加上 _test,即为 stat_test.go。
我们先来看 stat.go:

package stat
 
func Mean(data []float64) (mean float64){
   var sum float64
    for _, v := range data{
       sum += v
       }
    mean = sum/float64(len(data))
   return 
}

这是在前几天的文章出现过的例子,是在计算一串数据的平均值,接着我就是要对这个函式做个测试了。

先新增 stat_test.go 这个档案,我们先来看程序码:

package stat
 
import "testing"
 
func TestMean1(t *testing.T) {
   if Mean([]float64{1,2,3}) != 2{
       t.Error("fail")
   }
}
 
func TestMean2(t *testing.T) {
   if Mean([]float64{1,9,5}) != 5{
       t.Error("fail")
   }
}
 
func TestMean3(t *testing.T) {
   if Mean([]float64{6,7,10}) != 23.0/3.0{
       t.Error("fail")
   }
}

我们解释一下上述程序码,一开始,你需要载入套件 testing,接着你必须写一个 function,并且可能在里头运算你要测试的函式,在看是否符合所想要的答案。

接着要在终端机运行下列指令:

$ go test -v -cover=true stat_test.go stat.go
=== RUN   TestMean1
--- PASS: TestMean1 (0.00s)
=== RUN   TestMean2
--- PASS: TestMean2 (0.00s)
=== RUN   TestMean3
--- PASS: TestMean3 (0.00s)
PASS
coverage: 100.0% of statements
ok      command-line-arguments  0.379s  coverage: 100.0% of statements

而为什麽要把测试分成三个函式来写呢?

因为每个测试案例(Test Case)都应该是独立的,每个测试函式都是一个测试案例,这样比较能 check 是测试写错还是真的函式写错。

结语

今天介绍 Go 语言的测试如何去建构,用一个比较简单的例子带大家了解,当然随着你的程序逻辑越来越复杂,测试也会越来越难写,需要考虑更多细节,就有待你的经验累积。希望今天的文章对你有帮助,感谢今天的阅读!


<<:  [ 卡卡 DAY 13 ] - React Native 页面导览 Navigation (上)

>>:  day 20 - 新增需求:随时通知目前统计状况 nsq / websocket 介绍

Day14 用 100 寸超大萤幕写 Code 的感觉 - 用 metatable 改变预设行为

前两天我已经学会用 CC: Tweaked 电脑读取磁片和播放音乐 今天我要来写 Code 啦 !!...

[Day 22] - React 环境建置

可能是题目订的太大,感觉会做不完啊 剩下8天 差不多该开始前端的部分了 好,开始玩React nod...

D8. 学习基础C、C++语言

D8. 题目练习(uva11777) #include <stdio.h> #inclu...

测试魔术

Blazor WebAssembly 新手入门会碰上的问题也讲得差不多了,最後的最後我们来讲讲如何在...

从零开始学 3D 游戏设计:入门程序实作 Part.1 死亡岩浆

这是 Roblox 从零开始系列,入门章节的第七个单元,今天你将学会如何去打造一个让人闻风丧胆的死亡...