<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      拾貝雜苑

      Go語言test之類方法測試

      Go語言提供了完善的單元測試支持,開發人員可以方便的編寫測試代碼,保證自己代碼的質量。在目前的例子中,一般看到都是普通函數的例子。下面我將通過類方法的單元測試例子來展示一下Go語言的魅力。

      首先是代碼所在的文件xml.go:

      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)
      }
      

       接著編寫單元測試代碼,注意單元測試代碼應和被測試的代碼在同一個包,且應使用xxx_test.go的規則來命名測試代碼所在的文件,例如對上面的代碼文件,應將測試文件命名為xml_test.go,包括以下的代碼:

      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)
          }
      }
      

      測試代碼中,函數可以用如下方式命名:Test_T_M,其中T為類型名,M為方法名,這樣容易區分,但這不是Go語言的強制要求。

      具體測試代碼里先構造了一個類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,大功告成,你可以忙著寫其他的代碼去了^-^

      posted on 2014-04-15 12:36  拾貝雜苑  閱讀(2259)  評論(3)    收藏  舉報

      導航

      主站蜘蛛池模板: 人妻丝袜无码专区视频网站 | 亚洲人成电影在线天堂色| 国产精品亚洲专区无码破解版| 色道久久综合亚洲精品蜜桃| 国产欧美日韩亚洲一区二区三区 | 国产精品自拍实拍在线看| 午夜在线不卡| 美女爽到高潮嗷嗷嗷叫免费网站| 亚洲香蕉av一区二区蜜桃| 强伦姧人妻免费无码电影| 亚洲一区二区精品偷拍| 精品一区二区三区在线观看l| 成人拍拍拍无遮挡免费视频| 成人性能视频在线| 日韩精品一区二区三区久| 亚洲精品色哟哟一区二区| 色欲久久久天天天综合网精品 | 久热这里只有精品12| 国产亚洲精品自在久久vr| 久99久热免费视频播放| 六十路老熟妇乱子伦视频| 免费A级毛片樱桃视频| 青青青久热国产精品视频| 麻花传媒在线观看免费| 亚洲伊人久久综合成人| 亚洲男人av天堂久久资源| 国产精品白浆在线观看免费| 国产一区二区三区免费观看| 国产亚洲精品成人av在线| 狠狠色狠狠综合久久| 粉嫩小泬无遮挡久久久久久| 国产激情一区二区三区在线| 国产蜜臀在线一区二区三区| 国产高清在线精品一区二区三区| 中文字幕人妻有码久视频| 狠狠色婷婷久久综合频道日韩| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 亚洲日本一区二区三区在线播放| 亚洲国产欧美一区二区好看电影 | 18禁一区二区每日更新| 亚洲精品一区二区在线播|