侧边栏壁纸
博主头像
ToDream博主等级

行动起来,活在当下

  • 累计撰写 13 篇文章
  • 累计创建 5 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Go 编写单测

X
X
2023-11-16 / 0 评论 / 0 点赞 / 45 阅读 / 3471 字

基于GF gtest

测试文件命名规则

测试文件必须以 *_test.go 结构方式命名 例如: demo_test.go

测试文件编写方式

函数名必须以 Test 开头参数 t *testing.T

示例

package demoTest

func TestDemo (t *testing.T) {
	// 此处编写测试用例
}

gtest 内置断言函数

Assert:检查两个值是否相等。

AssertEQ:检查两个值是否相等,包括它们的数据类型。

AssertNE:检查两个值是否不相等。

AssertNQ:检查两个值是否不相等,包括它们的数据类型。

AssertGT:检查一个值是否大于另一个值。注意,只有字符串、整数和浮点数类型可以使用AssertGT进行比较,其他类型无效。

AssertGE:检查一个值是否大于或等于另一个值。注意,只有字符串、整数和浮点数类型可以使用AssertGE进行比较,其他类型无效。

AssertLT:检查一个值是否小于另一个值。注意,只有字符串、整数和浮点数类型可以使用AssertLT进行比较,其他类型无效。

AssertLE:检查一个值是否小于或等于另一个值。注意,只有字符串、整数和浮点数类型可以使用AssertLE进行比较,其他类型无效。

AssertIN:检查一个值是否包含在另一个值中。expect应该是一个切片,而value可以是一个切片或基本类型变量。

AssertNI:检查一个值是否不包含在另一个值中。expect应该是一个切片,而value可以是一个切片或基本类型变量。

AssertNil:断言一个值是否为nil

Error:用给定的消息触发一个错误。

Fatal:将消息打印到标准错误并退出进程。

编写示例

func TestUrlToBase64ImageFromWebApi(t *testing.T) {
	go gtest.C(t, func(t *gtest.T) {
		s := g.Server()
		s.SetAddr("127.0.0.1:8231")
		s.BindHandler("/test_img", func(r *ghttp.Request) {
			base64, err := lib.GetUrlImgBase64("http://aaa.com", 0)
			t.AssertNil(err)
			r.Response.WriteExit(base64)
		})
		s.Run()
	})
	time.Sleep(1 * time.Second)

	get, err := g.Client().Discovery(nil).Get(gctx.New(), "http://127.0.0.1:8231/test_img")
	gtest.AssertNil(err)
	gtest.Assert(get.ReadAllString(), "")
}

编写用例的好处

  1. 确保代码质量:编写测试用例可以帮助确保代码的质量和正确性。通过自动运行测试用例,您可以捕获潜在的错误和bug,确保代码按照预期工作。
  2. 快速反馈:测试用例可以迅速提供有关代码更改的反馈。如果您修改了代码并且测试用例失败,您会立即知道哪里出了问题,从而可以快速解决问题,而不必手动测试每个功能。
  3. 维护和重构:在进行代码维护或重构时,测试用例是非常有用的。它们可以帮助您确保修改不会破坏现有功能,并且可以提供保护,防止不小心引入新问题。
  4. 团队协作:测试用例可以作为文档,帮助团队成员理解代码的预期行为。这对于团队协作和代码审查非常有用。
  5. 自动化测试:测试用例可以自动运行,因此可以在持续集成(CI)和持续交付(CD)流程中自动执行。这有助于确保每个代码提交都经过全面的测试。
  6. 节省时间:虽然编写测试用例需要一些额外的工作,但它们通常可以帮助您在开发的后期节省大量时间,因为您不必手动测试每个功能。
  7. 信心和安全感:编写测试用例可以提供对代码的信心和安全感。它们可以让您知道代码在各种情况下都能正常工作,而不仅仅是在您当前的测试场景下。
  8. 代码文档:测试用例可以作为代码的文档,向其他开发人员展示如何正确使用和交互代码。
0

评论区