zoukankan      html  css  js  c++  java
  • Go之单元测试

     
      go单元测试需要按照gotest的规范来编写:
      1、文件名必须以xx_test.go命名
      2、方法必须是Test[^a-z]开头
      3、方法参数必须 t *testing.T
     
      在运行gotest的时候出现
        ~/Desktop/goproject/src [no test files]
      这里需要注意的是,我的测试文件在util包中,而我运行的路径是~/Desktop/goproject/src 
        
      所以,我改变下目录,在~/Desktop/goproject/src/util/目录下运行gotest 就ok了
      输出结果是
    	PASS
    	ok  	_/C_/Users/xycui/Desktop/goproject/src/util	0.172s
    	
    	testing: warning: no tests to run
    

     那么,这里就推荐使用测试包来做单元测试了

      

    这样,测试那个包就在哪个包下运行go test就ok了
    代码如下
    Queue代码如下:
     
    package util
    
    type Queue struct {
    	elements []interface{}
    }
    
    func NewQueue() *Queue {
    	return &Queue{make([]interface{}, 0)}
    }
    
    func (self *Queue) Push(e interface{}) {
    	self.elements = append(self.elements, e)
    }
    
    func (self *Queue) Length() int {
    	return len(self.elements)
    }
    
    func (self *Queue) Pull() interface{} {
    	temp := self.elements[0]
    	self.elements = self.elements[1:]
    	return temp
    }
    

     单元测试代码如下:

    package util_test
    
    import (
    	"../util"
    	"testing"
    )
    
    func Testqueue(t *testing.T) {
    	var queue = util.NewQueue()
    	queue.Push("1")
    	queue.Push("1")
    	queue.Push("1")
    	queue.Push("1")
    
    	// queue := util.NewQueue()
    	// queue.Push("string1")
    	// queue.Push("string2")
    	// queue.Push("string3")
    	// fmt.Println(queue)
    	// fmt.Println(queue.Pull())
    	// fmt.Println(queue.Length())
    	if queue.Length() != 4 {
    		t.Error("1")
    	}
    }
    

      

  • 相关阅读:
    《刀塔传奇》
    SSH端口转发
    objective-c与c++的差异
    mysql 远程连接速度慢的解决方案
    maven
    automapper 自动映射 集成asp.net Core2.1
    swagger 集成asp.net Core2.1
    asp.net Core 跨域配置
    处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
    SharedPreferences
  • 原文地址:https://www.cnblogs.com/anbylau2130/p/4864269.html
Copyright © 2011-2022 走看看