回答

收藏

如何使用“testing”包在 Go 测试中打印?

技术问答 技术问答 245 人阅读 | 0 人回复 | 2023-09-12

我在 Go 运行测试,用句子打印一些东西(即用于调试测试),但它没有打印任何东西。
9 v# Y/ U% H; t, \* E- v
    func TestPrintSomething(t *testing.T)    fmt.Println("Say hi")}& ^. v) ?! ]  m/ W9 f6 {1 p
当我在这个文件上运行时go test 时,这是输出:
. R) H+ v+ I7 T, _$ K! }, @
    ok      command-line-arguments  0.004s% l; z; w! `- a1 F
据我所知,真正打印它的唯一方法是通过 t.Error() 打印它,如下所示:" V7 {; ^7 s7 w! H; b2 |* x" a
    func TestPrintSomethingAgain(t *testing.T)    t.Error("Say hi")}6 v$ b! P  t/ C! u4 Y& J9 ]
输出这个:
# x+ n7 O. {2 o" C) W/ c8 @
    Say hi--- FAIL: TestPrintSomethingAgain (0.00 seconds)    foo_test.go:35: Say hiFAILFAIL    command-line-arguments  0.003sgom:  exit status 1* F6 N9 s( x( b" p3 Y( U
我用谷歌搜索并浏览了手册,但什么也没找到。
4 I0 y! g$ r+ i1 H/ C1 P2 |                                                                0 V6 U# T  L3 |8 q) S1 i
    解决方案:                                                                . A( S- z2 B/ y, r
                                                                结构体testing.T和testing.B两者都有一个.Logand.Logf方法听起来像是你要找的。.Log和.Logf分别类似于fmt.Print和fmt.Printf。( C5 h1 p' X/ @$ }8 f9 s$ I
此处查看更多详情:http : //golang.org/pkg/testing/#pkg-index
* t" ^( `9 s4 \. r6 T; N* Zfmt.Xprint 语句确实它在测试中工作,但你会发现它们的输出可能不在你想要找到的屏幕上,那么为什么要使用呢?testing.
% S1 X3 X0 U2 A. H' }如果你想看到未失败的测试日志,你必须提供它go test的-v标志(v冗长)。这里可以找到更多关于测试标志的详细信息:https : //golang.org/cmd/go/#hdr-Testing_flags
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则