适用于go的功能测试方法

时间:2013-08-16 14:02:30

标签: testing go md5

我是新手,开始玩测试。 我的方法返回一个带有md5哈希的[]字节。

func myHash(s string) []byte {
    h := md5.New()
    io.WriteString(h, s)
    return h.Sum(nil)
}

它正常工作,哈希看起来还不错,但是当我用这种方法测试它时:

func TestMyHash(t *testing.T) {
    s := "linux"
    bf := ("e206a54e97690cce50cc872dd70ee896")
    x := hashor(s)
    if !bytes.Equal(x, []byte(bf)) {
        t.Errorf("myHash ...")
    }
}

永远都会失败。首先我认为将字符串转换为[]字节可能会出现问题,反之亦然,但在反复尝试之后我只需要在这里询问。

你能举个例子来测试我的功能吗?我是否想念一些必要的东西?

提前致谢。

1 个答案:

答案 0 :(得分:6)

您可能正在将哈希的原始字节与哈希的十六进制格式化版本进行比较。你可能想做这样的事情:

got := fmt.Sprintf("%034x", myHash("linux"))
want := "00e206a54e97690cce50cc872dd70ee896"
if got != want {
    t.Errorf("got %q, want %q", got, want) 
}