Javascript 尝试使用TDD编写有意义的测试时,何时停止?
我正在努力寻找何时停止使用TDD编写测试用例 假设a必须编写一个只接受某些字符串的方法,它只能接受字符串Javascript 尝试使用TDD编写有意义的测试时,何时停止?,javascript,mocha.js,tdd,chai,Javascript,Mocha.js,Tdd,Chai,我正在努力寻找何时停止使用TDD编写测试用例 假设a必须编写一个只接受某些字符串的方法,它只能接受字符串['red','green','blue'],它是必需的,不能为空 我编写第一个失败的测试,使其变为绿色,依此类推,直到我有了测试用例: it('should accept red input', () => { /*...*/ } it('should accept green input', () => { /*...*/ } it('should accept blue in
['red','green','blue']
,它是必需的,不能为空
我编写第一个失败的测试,使其变为绿色,依此类推,直到我有了测试用例:
it('should accept red input', () => { /*...*/ }
it('should accept green input', () => { /*...*/ }
it('should accept blue input', () => { /*...*/ }
it('should not accept null input', () => { /*...*/ }
it('should not accept empty input', () => { /*...*/ }
在这一点上,一切都通过了,现在我应该结束这一天并开始吗?或者如果紫色的Purple
失败,我应该开始添加一个测试吗?添加此测试是否有意义?
如果是,我还可以说出其他10种颜色来测试,我也应该考虑它们吗?< /P>
这个例子很简单,但是有一些正则表达式具有无限组合的情况,我知道这可能是一个问题,我不能添加所有我能想到的时间约束测试用例。这些都是最糟糕的,因为我不知道什么时候停止编写测试代码,什么时候足够就足够了
我明白我不能得到一个具体的答案,但我想从经验中听到什么在大多数情况下都有效。一个很好的答案是在这里发布: 简而言之,你考虑失败的可能性,并权衡写自动测试用例的成本。 在您的情况下,您可以测试另一种颜色,看看它是否正确地拒绝它。但在所有情况下进行测试都是不必要和不可能的
如果您开始接收某个值的重复错误,您可能希望将其添加到测试中。否则边界检查就可以了(空或无、行为正确、一次失败)通常,您希望测试输入类而不是特定的输入,除非您已经知道特定的输入将产生需要测试的特定情况 在您的示例中,我将其分解为四个测试:
你也可以从
中考虑这个观察。 我得到的报酬是可以工作的代码,而不是测试,所以我的理念是尽可能少地测试,以达到给定的信心水平 记住,在测试中投入的时间不是在其他地方投入的时间。有时候,正确的做法是发布代码,然后在您了解了新的代码应该如何工作后再返回代码