go单元格测试

编写单元测试(Unit Test)是一种测试方法,用于验证代码中的单个功能单元(通常是函数或方法)是否按照预期工作。以下是编写单元测试的一般步骤:

  1. 创建测试文件:在项目的测试目录中创建一个新的测试文件,文件名通常以 _test.go 结尾,例如 mycode_test.go 。

  2. 导入测试所需的包:在测试文件的开头,导入所需的包,包括 testing 包和待测试代码的包。 3. 编写测试函数:在测试文件中,使用 func TestXxx(t *testing.T) 的格式编写测试函数。其中 Xxx 是要测试的函数名或方法名。

  3. 编写测试用例:在测试函数中,编写一系列测试用例,每个测试用例都是一个独立的函数调用,用于验证待测试函数的不同方面和边界条件。

  4. 运行测试:在终端或命令行中,使用 go test 命令运行测试。系统将自动查找并执行测试文件中的所有测试函数。

  5. 检查测试结果:运行完成后,系统将显示每个测试用例的执行结果,包括通过的用例和失败的用例。如果有失败的用例,系统将显示详细的错误信息。

  6. 分析和修复问题:根据测试结果,分析失败的用例,并修复代码中的问题。然后重新运行测试,直到所有用例都通过为止。 这是一个简单的示例:

    package mycode

    import "testing"

    func TestAdd(t *testing.T) {
    result := Add(2, 3)
    expected := 5
    if result != expected {
    t.Errorf("Add(2, 3) returned %d, expected %d", result, expected)
    }
    }

    func TestSubtract(t *testing.T) {
    result := Subtract(5, 2)
    expected := 3
    if result != expected {
    t.Errorf("Subtract(5, 2) returned %d, expected %d", result, expected)
    }
    }

    go test -run TestFun

在上述代码中,"t" 是一个 *testing.T 类型的参数,它用于表示测试对象。在 Go 语言中, *testing.T 是一个测试对象的指针,用于执行断言和记录测试结果。 在单元测试中,我们使用 t 参数来调用断言方法,例如 assert.Empty(t, result) 或 assert.Equal(t, expected, result) 。这些断言方法用于验证测试结果是否符合预期,并在测试失败时生成相应的错误消息。 所以,在上述代码中,"t" 代表测试对象,用于执行断言并记录测试结果。

初始化

在Go语言中,当声明一个变量时,如果没有显式赋值,那么变量将被赋予其类型的默认零值。 对于数值类型(如 int 、 float64 等),默认零值是0。对于布尔类型,默认零值是 false 。对于字符串类型,默认零值是空字符串 "" 。对于引用类型(如 map 、 slice 、 struct 等),默认零值是 nil 。 因此,在声明 int 等字段时,它们会被自动初始化为其类型的默认零值。您无需显式进行初始化操作。

在Go语言中,没有名为 string[struct] 的数据类型。然而,你可以使用 map[string]struct{} 来实现一个类似的结构,其中 string 作为键, struct{} 作为值。这样可以创建一个映射,将字符串与空结构关联起来。

复制代码
type EmptyStruct struct{}

func main() {
	data := make(map[string]EmptyStruct)

	// 添加键值对
	data["key1"] = EmptyStruct{}
	data["key2"] = EmptyStruct{}

	// 检查键是否存在
	if _, ok := data["key1"]; ok {
		fmt.Println("key1存在")
	}

	// 删除键值对
	delete(data, "key2")
}
相关推荐
汤姆宝库4 天前
推理时计算深拆:思维链、验证搜索与测试时Scaling
log4j
神一样的老师11 天前
WS63 嵌入式 SSD1306 OLED 驱动单元测试实战
单元测试·log4j
silvamux_13 天前
大模型 API 单元测试怎么 mock 不误伤
单元测试·log4j·php
system_error_x14 天前
自动化常规代码辅助系统
运维·自动化·log4j
看浪的路人14 天前
第10讲:大模型应用测试——从单元测试到 E2E 评测的完整体系
log4j
草莓熊Lotso16 天前
【C++ 基于微服务的即时通讯系统】基建三件套:gflags + gtest + spdlog 源码编译安装与实战入门
linux·网络·数据库·c++·微服务·log4j
j7~17 天前
【C++ 标准项目】发布订阅消息队列 (篇七):项目创建与基础工具模块搭建
开发语言·c++·log4j·uuid·protobuf·helper工具·消息定义类型和交换机类型定义
楚楚25118 天前
2026最新6款Cursor平替AI编程工具深度实测对比
log4j
回眸&啤酒鸭19 天前
【回眸】自动化白盒测试落地实战指南
运维·自动化·log4j
我就是不信20 天前
CuTest:轻量级 C 语言单元测试框架实战指南
c语言·单元测试·log4j