dqn8235 2014-11-14 19:50
浏览 33
已采纳

Golang测试标准

I am trying to test some functions that print ANSI escape codes. e.g.

// Print a line in a color
func PrintlnColor(color string, a ...interface{}) {
    fmt.Print("\x1b[31m")
    fmt.Print(a...)
    fmt.Println("\x1b[0m")
}

I tried using Examples to do it, but they don't seem to like escape codes.

Is there any way to test what is written to stdout?

  • 写回答

1条回答 默认 最新

  • doulao7572 2014-11-15 15:19
    关注

    Using fmt.Fprint to print to io.Writer lets you control where the output is written.

    var out io.Writer = os.Stdout
    
    func main() {
        // write to Stdout
        PrintlnColor("foo")
    
        buf := &bytes.Buffer{}
        out = buf
    
        // write  to buffer
        PrintlnColor("foo")
    
        fmt.Println(buf.String())
    }
    
    // Print a line in a color
    func PrintlnColor(a ...interface{}) {
        fmt.Fprint(out, "\x1b[31m")
        fmt.Fprint(out, a...)
        fmt.Fprintln(out, "\x1b[0m")
    }
    

    Go play

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

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路