博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
golang subprocess tests
阅读量:6438 次
发布时间:2019-06-23

本文共 666 字,大约阅读时间需要 2 分钟。

golang Subprocess tests

Sometimes you need to test the behavior of a process, not just a function.

func Crasher() {    fmt.Println("Going down in flames!")    os.Exit(1)}

To test this code, we invoke the test binary itself as a subprocess:

func TestCrasher(t *testing.T) {    if os.Getenv("BE_CRASHER") == "1" {        Crasher()        return    }    cmd := exec.Command(os.Args[0], "-test.run=TestCrasher")    cmd.Env = append(os.Environ(), "BE_CRASHER=1")    err := cmd.Run()    if e, ok := err.(*exec.ExitError); ok && !e.Success() {        return    }    t.Fatalf("process ran with err %v, want exit status 1", err)}

核心技巧在于os.args[0]可以获取到真实的可执行 test 程序,从而改变环境变量.

转载地址:http://wmkwo.baihongyu.com/

你可能感兴趣的文章
2014年工作中遇到的20个问题:120-140
查看>>
[原创]windows server 2012 AD架构 试验 系列 – 11AD域和站点部署(2)
查看>>
解决win10不能安装NVIDIA的RTX 20系列的显卡驱动问题
查看>>
pdf如何解密
查看>>
jquery datatable的详细用法
查看>>
并发编程之 进程
查看>>
ansible 下lineinfile详细使用
查看>>
oracle 用函数返回对象集合
查看>>
猫猫学IOS(二十一)UIApplication设置程序图标右上⾓红⾊数字_联⺴指⽰器等
查看>>
Java(第十五章)
查看>>
Android--静默安装
查看>>
生命有尽,大道无涯
查看>>
JavaScript实现省市二级联动
查看>>
IOS Unit test
查看>>
HttpClient 学习整理[转]
查看>>
2019-05-21 Java学习日记之String类型Demo
查看>>
PHP将两个二维数组合并为一个二维数组的方法
查看>>
再见,2014;你好2015
查看>>
mysql 导入导出.sql文件
查看>>
NIO - Selector源码分析
查看>>