testing - go中函数的正确测试方法

标签 testing go md5

我刚开始接触测试。 我的方法返回一个带有 md5 散列的 []byte。

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 ...")
    }
}

它总是会失败。首先,我认为将字符串转换为 []byte 或将字符串转换为 []byte 可能存在一些问题,但在一遍又一遍地尝试之后,我只需要在这里问一下。

你能给我一个如何测试我的功能的例子吗?我是否遗漏了一些必要的东西?

提前致谢。

最佳答案

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

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

关于testing - go中函数的正确测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18275191/

相关文章:

testing - 自动化测试 Web 应用程序

go - 如何使用 json 传递 opentracing 数据

mysql - 在数据库中存储 MD5 时 BINARY(16) 和 CHAR(32) 之间的区别

go - ioutil.TempFile 和 umask

go - 如何在使用线性探测解决冲突后从哈希表中检索值?

file - SHA-256 或 MD5 确保文件完整性

php - 如何使用 php 和 md5 将数据库中存储的图像与用户输入的图像进行比较

ios - 我可以假设所有用户在同一 iOS 设备上应用程序速度相同吗

python - 如何创建自动化测试滚动列表直到元素在 View 中

testing - JMeter 加密凭据