GO单元测试和基准测试(性能测试)

47 阅读1分钟

新建文件名: main_test.go

方法名: Testxxx开头为单元测试方法; Benchmarkxxx为基准测试方法

package main  
  
import (  
"encoding/json"  
"github.com/bytedance/sonic"  
"testing"  
)  
  
type Student struct {  
Name string  
Age int  
}  
  
var stu = Student{  
Name: "wade",  
Age: 12,  
}  
  
//单元测试  
func TestJson(t *testing.T) {  
  
jsonStr, err := json.Marshal(stu)  
if err != nil {  
t.Fail()  
}  
  
var stu Student  
err = json.Unmarshal(jsonStr, &stu)  
if err != nil {  
t.Fail()  
}  
  
}  
  
//单元测试  
func TestSonic(t *testing.T) {  
//sonic是字节开源的json序列化框架,性能比go自带的要好  
jsonStr, err := sonic.Marshal(stu)  
if err != nil {  
t.Fail()  
}  
  
var stu Student  
err = sonic.Unmarshal(jsonStr, &stu)  
if err != nil {  
t.Fail()  
}  
  
}  
  
//基准测试(性能测试)  
func BenchmarkJson(b *testing.B) {  
for i := 0; i < b.N; i++ {  
jsonStr, _ := json.Marshal(stu)  
  
var stu Student  
_ = json.Unmarshal(jsonStr, &stu)  
  
}  
}  
  
//基准测试(性能测试)  
func BenchmarkSonic(b *testing.B) {  
for i := 0; i < b.N; i++ {  
jsonStr, _ := sonic.Marshal(stu)  
  
var stu Student  
_ = sonic.Unmarshal(jsonStr, &stu)  
  
}  
}