我想知道是否有一种通用的方法可以单元测试一个相当大的结构体的值,而不必写许多if语句。 我知道在Go中我们可以使用表驱动的单元测试,但我还没有找到如何使用结构体实现这种表驱动的方法。
我的目标是创建一个结构体,对其进行操作,并对结构体的新值进行单元测试。 有人知道如何使用表驱动测试来实现这一点,或者有更好的方法吗?
我想知道是否有一种通用的方法可以单元测试一个相当大的结构体的值,而不必写许多if语句。 我知道在Go中我们可以使用表驱动的单元测试,但我还没有找到如何使用结构体实现这种表驱动的方法。
我的目标是创建一个结构体,对其进行操作,并对结构体的新值进行单元测试。 有人知道如何使用表驱动测试来实现这一点,或者有更好的方法吗?
type S struct {
A int
B float64
}
func main() {
fmt.Println(S{1, 3.14} == S{1, 3.14}) // Prints true.
}
reflect.DeepEqual
:type S2 struct {
A int
B *float64
}
func main() {
var f1, f2 = 3.14, 3.14
// Prints false because the pointers differ.
fmt.Println(S2{1, &f1} == S2{1, &f2})
// Prints true.
fmt.Println(reflect.DeepEqual(S2{1, &f1}, S2{1, &f2}))
}
游乐场:http://play.golang.org/p/G24DbRDQE8。
任何比这更复杂的东西很可能需要您定义自己的相等方法。
reflect.DeepEqual
。我现在想我会如何管理它了,因为我有点担心我的指针。干杯 - jbrulmans