duandongji2231 2016-08-28 19:05
浏览 53
已采纳

如何包装golang测试功能

I'd like to wrap standard golang test functions, such as t.Errorf from the testing package.

I tried this:

// AssertEqual tests that the expected and actual values match
func AssertEqual(t *testing.T, expected interface{}, actual interface{}) {
    switch expected.(type) {
    case string:
        if expected != actual {
            t.Errorf("Error:
expected: %s
actual: %s", expected, actual)
        }
    default:
        t.Errorf("Unsupported type")
    }
}

However, when a test fails, I get the function and line number of my helper function:

test_asserts.go:12: Error:
    expected: 
    actual: TestValue

Is there a way to error at the line number of the caller?

  • 写回答

3条回答 默认 最新

  • dongzhong1891 2016-08-28 19:30
    关注

    This is how the testing library does it: https://golang.org/src/testing/testing.go?h=Errorf#L285

    By using runtime.Caller.

    You can borrow this code for your own error function that would look one deeper into the stack. You can replace the entirety of Errorf (which is log + fail) or a bit less pretty but less code would be to just print the entire stack using something like debug.PrintStack() before calling Errorf.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥15 看一下OPENMV原理图有没有错误
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置
  • ¥15 Java计划序号重编制功能,此功能会对所有序号重新排序,排序后不改变前后置关系。
  • ¥15 关于哈夫曼树应用得到一些问题