zoukankan      html  css  js  c++  java
  • 用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. 断言

  • 相关阅读:
    UIView
    UISwitch
    UIButton
    label标签的属性
    sublime 生成网页头文件
    Xcode快捷键
    Bootstrap 模态对话框只加载一次 remote 数据的解决办法 转载
    用谷歌浏览器来当手机模拟器
    DDD:谈谈数据模型、领域模型、视图模型和命令模型
    MoQ(基于.net3.5,c#3.0的mock框架)简单介绍
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/14544453.html
Copyright © 2011-2022 走看看