dqol6556 2017-02-07 17:29
浏览 52

如何对文本显示在屏幕中央进行单元测试?

This is a little script in go.

package bashutil

import (
    "fmt"
    "github.com/nsf/termbox-go"
)

func Center(s string) {
    if err := termbox.Init(); err != nil {
        panic(err)
    }
    w, _ := termbox.Size()
    termbox.Close()
    fmt.Printf(
        fmt.Sprintf("%%-%ds", w/2),
        fmt.Sprintf(fmt.Sprintf("%%%ds", w/2+len(s)/2), s),
    )
}

Can I unit test it? How can I test it? I think is a nonsense test a snippet so little. But, ... What if I would test this code? How can I test that an output is equals as I expect?

Can I test that fmt prints something like I expect?

  • 写回答

1条回答 默认 最新

  • duan4739 2017-02-08 13:29
    关注

    What means "test" ?

    I think "test" need have effect on output of a function.

    Your function's output is Stdout, so we need get the output first.

    We can do this simply:

    func TestCenter(*testing.T) {
        stdoutBak := os.Stdout
        r, w, _ := os.Pipe()
        os.Stdout = w
    
        Center("hello")
        w.Close()
        os.Stdout = stdoutBak
    
        // Check output as a byte array
        outstr, _ := ioutil.ReadAll(r)
        fmt.Printf("%s", outstr)
    }
    

    Thus, you can check output format, spelling, etc.

    评论

报告相同问题?

悬赏问题

  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单