duanhai4046 2019-05-03 03:55 采纳率: 100%
浏览 54
已采纳

去:套件运行后打印文本?

The testing package captures all output and will not print it unless a test fails or verbose (-v) is turned on. Is there a way to output text after the suite is finished without needing verbose turned on?

For example:

func TestMain(m *testing.M) {
    status := m.Run(m)
    fmt.Println("important line to output")
    os.Exit(status)
}

Will not print the line.


Edit: I have found out that fmt.Println will work if you run the tests from inside the package (go test), but not if one or more packages are specified (go test ./...) unless the -v option is enabled.

  • 写回答

1条回答 默认 最新

  • dqq22391 2019-05-03 13:19
    关注

    The testing package captures all output and will not print it unless a test fails or verbose (-v) is turned on

    What makes you say that stdout is captured? If I save this code into main_test.go and run go test:

    package main
    
    import (
        "fmt"
        "os"
        "testing"
    )
    
    func TestJoe(t *testing.T) {
        fmt.Println("from joe")
    }
    
    func TestMain(m *testing.M) {
        fmt.Println("before run")
        s := m.Run()
        fmt.Println("after run")
        os.Exit(s)
    }
    

    I get:

    $ go test
    before run
    from joe
    PASS
    after run
    

    About output with ./..., here's an excerpt from go help test:

    The second, called package list mode, occurs when go test is invoked with explicit package arguments (for example 'go test math', 'go test ./...', and even 'go test .'). In this mode, go test compiles and tests each of the packages listed on the command line. If a package test passes, go test prints only the final 'ok' summary line. If a package test fails, go test prints the full test output. If invoked with the -bench or -v flag, go test prints the full output even for passing package tests, in order to display the requested benchmark results or verbose logging.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?