许多程序语言在主程序写好後,还需要对程序进行测试,这时就需要写测试的档案。在 Go 语言中,测试框架已经有内建套件(testing)了,不需要在选择框架或是安装後第三方套。
今天写好了程序後,如果你需要测试的档案名称为 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 介绍
前两天我已经学会用 CC: Tweaked 电脑读取磁片和播放音乐 今天我要来写 Code 啦 !!...
可能是题目订的太大,感觉会做不完啊 剩下8天 差不多该开始前端的部分了 好,开始玩React nod...
D8. 题目练习(uva11777) #include <stdio.h> #inclu...
Blazor WebAssembly 新手入门会碰上的问题也讲得差不多了,最後的最後我们来讲讲如何在...
这是 Roblox 从零开始系列,入门章节的第七个单元,今天你将学会如何去打造一个让人闻风丧胆的死亡...