美文网首页
Coding Dojo:Given_When_Then命名法的思

Coding Dojo:Given_When_Then命名法的思

作者: 我是月月老师 | 来源:发表于2018-11-22 10:30 被阅读0次

    Coding Dojo要输出什么?

    Coding Dojo不是以完成题目要求的所有代码为目的,而是以练习编程为目的。就像一个篮球运动员,在平时训练的时候,不以相互对抗,投篮得分为目的,而是练习基础的投篮姿势,投篮角度,做各种运动增强体能。做为程序员,Coding Dojo是我们进行基础训练的场合,我们要训练给变量和函数起一个准确的名字,让函数尽量短小,让程序更加优雅等等。

    关于Given_When_Then的case命名法

    我们经常困惑Given和When后面应该写哪些内容,有的时候把两个内容调换一下似乎也讲得通。

    以Game of life为例:

    Given_活着的邻居数量为3_When_目标细胞活着_Then_下一轮目标细胞活着

    VS

    Given_目标细胞活着_When_活着的邻居数量为3_Then_下一轮目标细胞活着

    本次Coding Dojo时,两种命名方式都有人用到。那一种方式更符合逻辑呢?

    做一个类比:

    Given_太平盛世_When_一个人职业是诗人_Then_这个人生活富足(李白)

    Given_兵马乱世_When_一个人职业是诗人_Then_这个人饿死(杜甫)

    VS

    Given_一个人职业是诗人_When_太平盛世_Then_这个人生活富足

    Given_一个人职业是诗人_When_兵马乱世_Then_这个人饿死

    很明显,对于一个人,他可以选择职业,但是不能选择社会状态,因此第二种命令方法好,即一个人的职业是Given, 他所处的社会状态是When。

    回到Game of life的例子,一个细胞的状态应该是Given,它所处的邻居状态是When。

    正确的命名法:

    Given_目标细胞活着_When_活着的邻居数量为3_Then_下一轮目标细胞活着

    Given_目标细胞活着_When_活着的邻居数量为1_Then_下一轮目标细胞死掉

    Given_目标细胞活着_When_活着的邻居数量为4_Then_下一轮目标细胞死掉

    Given_目标细胞死着_When_活着的邻居数量为3_Then_下一轮目标细胞复活

    之所以选择诗人作为类比,是因为笔者在陪娃背古诗的时候想到了该应如何使用Given_When_Then命名法。百度了一下”杜甫很忙“的梗,发现网友超级有想象力,感兴趣的人可以自行搜索。

    感谢丁克同学给文章提了意见,从理论角度阐述了given_when_then命名法:

    ·         Given 一个上下文,指定测试预设

    ·         When 进行一系列操作,即所要执行的操作(一般写成动宾格式短语)

    ·         Then 得到一系列可观察的后果,即需要检测的断言

    关于Given when then命名法:

    这里要看你的测试对象是什么,这个很关键,不然Given和when后很可能混淆

    比如:

    测试对象是人

    Given:人的上下文预设:这是一个诗人

    When:对人的操作:把这个人放在太平盛世中

    Then:对人产生的结果:这个人将获得富足的生活

    Given_一个人职业是诗人_When_活在太平盛世_Then_这个人生活富足

    测试对象是世道

    Given:世道的上下文预设:这是一个太平盛世的世道

    When:对世道的操作:在太平盛世中放入一个诗人

    Then:对世道产生的结果:这个世道将有 更多绚丽的诗歌

    Given_太平盛世_When_一个人职业是诗人_Then_这个人生活富足(李白)  【混淆了】

    对于Game of life题目,测试对象是细胞:

    Given_目标细胞活着_When_活着的邻居数量为3_Then_下一轮目标细胞活着

    相关文章

      网友评论

          本文标题:Coding Dojo:Given_When_Then命名法的思

          本文链接:https://www.haomeiwen.com/subject/nkgkqqtx.html