如何修改 goland 默认生成的单元测试的样式。

254 天前
 yujianwjj
func check(a, b int) bool {
	return false
}

用 goland 给上面这个函数生成的测试方法

func Test_check(t *testing.T) {
	type args struct {
		a int
		b int
	}
	tests := []struct {
		name string
		args args
		want bool
	}{
		// TODO: Add test cases.
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := check(tt.args.a, tt.args.b); got != tt.want {
				t.Errorf("check() = %v, want %v", got, tt.want)
			}
		})
	}
}

默认生成的规则是把函数所有的参数放到一个 args 结构体里面。自己不太喜欢这种风格。 我希望是下面这种风格。

func Test_check(t *testing.T) {
	tests := []struct {
		name string
		a    int
		b    int
		want bool
	}{
		// TODO: Add test cases.
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := check(tt.a, ttb); got != tt.want {
				t.Errorf("check() = %v, want %v", got, tt.want)
			}
		})
	}
}

请教一下 goland 是否可以改成默认用我这种风格。

顺便再请教一个问题:

  1. 如果一个函数的参数有一个大的结构体(比如 k8s 的 deployment 那种),每次写单元测试的时候,要构造一个大的结构体,特别麻烦,有没有好的解决方案。
1121 次点击
所在节点    Go 编程语言
1 条回复
xhd2015
254 天前
这个应该是一个叫做 gotests 的工具生成的,你可以手动运行命令行。参考 https://github.com/cweill/gotests

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1030871

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX