Go语言 单元测试
2014-04-20 15:20
246 查看
首先是代码所在的文件xml.go:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package myxml import ( "encoding/xml" ) type XMLRsq struct { XMLName xml.Name `xml: "response" ` ResCode string `xml: "res_code" ` ResMessage string `xml: "res_message" ` } func (r *XMLRsq ) ToString() (string, error) { b, err := r.ToBytes() return string(b), err } func (r *XMLRsq ) ToBytes() ([]byte, error) { b, err := xml.Marshal(r) if err != nil { return b, err } b = append([]byte(xml.Header), b...) return b, err } func (r *XMLRsq ) Parse(b []byte) error { return xml.Unmarshal(b, r) } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package myxml import "fmt" import "encoding/xml" import "testing" func Test_XMLRsp_ToString(t *testing.T) { in := XMLRsp{xml.Name{Space: "" , Local: "XMLRsp" }, "1" , "1" , "1" } out := []byte(xml.Header) out = append(out, []byte(`<XMLRsp><res_code>1</res_code><res_message>1</res_message><can_use>1</can_use></XMLRsp>`)...) r := in b, _ := r.ToString() if b != string(out) { t.Errorf( "XMLRsp_ToString failed, result is: [%s]\n" , b) fmt.Printf( "Expectation is: [%s]\n" , out) } else { fmt.Printf( "XMLRsp_ToString result is: [%s]\n" , b) } } func Test_XMLRsp_Parse(t *testing.T) { in := []byte(`<XMLRsp><res_code>1</res_code><res_message>1</res_message><can_use>1</can_use></XMLRsp>`) out := XMLRsp{xml.Name{Space: "" , Local: "XMLRsp" }, "1" , "1" , "1" } r := new (XMLRsp) _ = r.Parse(in) if *r != out { t.Errorf( "XMLRsp_Parse failed, result is: [%s]\n" , *r) fmt.Printf( "Expectation is: [%s]\n" , out) } else { fmt.Printf( "XMLRsp_Parse result is: [%s]\n" , *r) } } |
具体测试代码里先构造了一个类XMLRsp的对象,然后通过它去调用相应的类方法,本质上与其他单元测试代码并无不同。
上面测试代码第15行,先用了一个类型转换string(out)来得到一个string类型的out表示,因为Go语言里slice之间不能直接比较。
XMLRsp类的3个方法中,ToString的执行路径已经覆盖了ToBytes,故未单独编写用例。
运行go test命令,可以得到类似如下的结果:
XMLRsp_ToString result is: [<?xml version="1.0" encoding="UTF-8"?> <XMLRsp><res_code>1</res_code><res_message>1</res_message><can_use>1</can_use></XMLRsp>] XMLRsp_Parse result is: [{{ XMLRsp} 1 1 1}] PASS ok myxml 1.016s
表示这次测试的结果为PASS,大功告成,你可以忙着写其他的代码去了^-^
相关文章推荐
- Go语言中的单元测试及反向代理
- Go语言单元测试
- [Go语言学习]之一:搭建单元测试环境
- go语言单元测试demo
- Go语言单元测试
- go语言单元测试个人总结
- Go语言如何单元测试
- [Go语言学习]之一:搭建单元测试环境
- Go语言-单元测试
- Go语言基础单元测试示例
- GO语言map
- 模仿Go语言的Benchmark测试框架写了JAVA版的简化测试工具
- linux环境下搭建Go语言开发环境并设置语法高亮
- Go语言中的流程控制结构和函数详解
- go语言操作mysql范例(增删查改)
- GO语言补充(三)
- Go语言并发模型的2种编程方案
- Go语言实现http共享
- Go语言数据结构
- Go语言中地址传递及指针的理解