• 用Golang单元测试写作文


    [本文出自天外归云的博客园]

    今天有人发帖问,如果以后不在腾讯做程序员了想干嘛。

    就让我用一个规范的单测来回答这个问题吧:

    // MySelf 我自己
    type MySelf struct {
    	WantToDo []string
    }
    
    // Career 职业
    type Career struct {
    	Desc string
    }
    
    // WhatMyCareerWillBe 我未来会干嘛
    func WhatMyCareerWillBe(myself MySelf) Career {
    	return BeingATencentProgrammer(myself)
    }
    
    // BeingATencentProgrammer 在腾讯做程序员
    func BeingATencentProgrammer(myself MySelf) Career {
    	fmt.Printf("我以后想:%+v", myself.WantToDo)
    	return Career{
    		Desc: "每天两点一线写代码",
    	}
    }
    
    // TestWhatMyCareerWillBe 测试WhatMyCareerWillBe
    func TestWhatMyCareerWillBe(t *testing.T) {
    	// 准备测试数据
    	whatIWantToDoFirst := "开台球厅+自带经营烤冷面、手抓饼、陕西凉皮、长春炒粉、鸡汤豆腐串+酸菜烤牛肉小酒馆"
    	whatIWantToDoSec := "软件工程各类计算机语言编程培训辅导老师"
    	myself := MySelf{
    		WantToDo: []string{whatIWantToDoFirst, whatIWantToDoSec},
    	}
    	// Stub BeingATencentProgrammer
    	gomonkey.ApplyFunc(
    		BeingATencentProgrammer,
    		func(_ MySelf) Career {
    			return Career{
    				Desc: myself.WantToDo[rand.Intn(len(myself.WantToDo))],
    			}
    		})
    	// 执行待测方法
    	myCareer := WhatMyCareerWillBe(myself)
    	// 断言
    	assert := assert.New(t)
    	assert.True(myCareer.Desc == whatIWantToDoFirst || myCareer.Desc == whatIWantToDoSec)
    }
    

    短短一文,包含了单测的几个标准步骤:

    1. 准备数据

    2. Mock/Stub/Expect的组合

    3. 执行待测方法

    4. 断言

  • 相关阅读:
    常用的SQL语句
    解决Pycharm中module 'pip' has no attribute 'main'的问题
    [转]如何使用Fiddler抓取指定浏览器的数据包
    Linux常用命令
    Android:JACK编译错误汇总及解决
    Linux学习:使用 procrank 测量系统内存使用情况
    Android:动态库(.so)调试技巧
    Android 显示系统:Vsync机制
    Android:cmake开发指南
    Android:高通平台性能调试
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/14544453.html
Copyright © 2020-2023  润新知