gocheck 测试框架

最后更新于:2022-04-02 02:51:50

[TOC] ## 安装 `go get gopkg.in/check.v1` ## 常用断言快速入门 ``` package hello_test import ( "github.com/pkg/errors" "testing" . "gopkg.in/check.v1" ) func Test(t *testing.T) { TestingT(t) } type MySuite struct{} var _ = Suite(&MySuite{}) func (s *MySuite) TestHelloWorld(c *C) { value := 42 array :=[]string{"hi","there"} err := errors.New("perm.*denied") list := []string{"name","asda"} var err1 error //check.C.Assert() c.Assert(value, DeepEquals, 42) c.Assert(array, DeepEquals, []string{"hi", "there"}) c.Assert(value, Not(Equals), 43) c.Assert(value, Equals, 42) c.Assert(err, ErrorMatches, "perm.*denied") c.Assert(list, HasLen, 2) c.Assert(err1, IsNil) } ``` ## 文件操作相关的单元测试 ``` package main import ( "testing" "io/ioutil" . "gopkg.in/check.v1" ) const txt = "adfagaggafaf" func Test(t *testing.T) { TestingT(t) } type MySuite struct { dir string // 测试用的临时目录 f string // 测试用的临时文件 } var _ = Suite(&MySuite{}) // Setupsuite 准备测试用的临时文件 func (s *MySuite) SetUpSuite(c *C) { dir := c.MkDir() // Suite结束后会自动销毁c.MkDir()创建的目录 tmpfile, err := ioutil.TempFile(dir, "") if err != nil { c.Errorf("Fail to create test file: %v\n", tmpfile.Name(), err) } err = ioutil.WriteFile(tmpfile.Name(), []byte(txt),0777) //tmpfile.Name() C:\Users\idcpj\AppData\Local\Temp\check-6334824724549167320\0\143714611 if err != nil { c.Errorf("Fail to prepare test file.%v\n", tmpfile.Name(), err) } //把创建的文件和目录保存到 MySuite下 s.dir = dir s.f = tmpfile.Name() } func (s *MySuite) TestFoo(c *C) { // ... 实际测试代码 c.Assert(bkpName, Matches, s.f+".ops_agent_bkp.+") } ``` ## ## 创建一个用例组 ``` var _ = check.Suite(&MySuite{}) ``` ## 预热或者清理回收 ``` func (s *SuiteType) SetUpSuite(c *C) //用例组数据或对象准备 func (s *SuiteType) SetUpTest(c *C) //单用例数据或对象准备 func (s *SuiteType) TearDownTest(c *C) //单用例后续数据回收及对象清理 func (s *SuiteType) TearDownSuite(c *C) //用例组数据回收及对象清理 ```
';