golang subprocess tests
2024-08-26 07:58:49
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 程序,从而改变环境变量.
最新文章
- Swift String类型常规操作
- Chrome开发者工具不完全指南(五、移动篇)
- php实现设计模式之 解释器模式
- java中String、StringBuffer、StringBuilder的区别
- JS小数点加减乘除运算后位数增加的解决方案
- 当android studio一直显示gradle compile dependency
- 文本信息“welcome to java programming!”
- .net开发---自定义页面打印区域
- python文件目录遍历保存成xml文件代码
- 以前学习cisco ccna 课程的时候做的笔记
- jmeter 脚本规范
- HDU1348 Wall 凸包
- Linux tar命令之--exclude参数 排除指定的文件或目录
- DIV+CSS初学随记
- Mybatis 通用 Mapper 和 Spring 集成
- mysql5.7.25安装
- 传参导出Excel表乱码问题解决方法
- python中的控制流
- spring的@Transactional注解详细用法(转载)
- delphi IOS 后台状态保存
热门文章
- 求分数1+1/2+1/3+.....+1/n的值
- Vue.js:表单
- CommonJS、CMD和AMD规范分别是什么
- 第六章 深入分析ClassLoader工作机制
- python's twenty-sixth day for me 模块
- 简单的HTTP服务实现
- 在CentOS6.x下安装Compiz——桌面立方体,特效种种
- pandas map, apply, applymap区别
- Django----解决跨域
- sql语句in超过1000时的写法