我对单元测试有点困惑。我看到了自动化测试等事物的值(value)。我认为也许一个很好的例子是帮助我理解的最好方法。可以说我有一个二进制搜索功能,我想对其进行单元测试。
现在在测试中,我想知道这样的事情:搜索是否找到了第一个元素、最后一个元素和其他元素?搜索是否正确比较 unicode 字符。搜索是否处理符号和其他“痛苦”字符。单元测试会覆盖这个,还是我错过了它?你会如何为我的二进制搜索编写单元测试?
function search(collection, value){
var start = 0, end = collection.length - 1, mid;
while (start <= end) {
mid = start + ((end - start) / 2);
if (value == collection[mid])
return mid;
if (collection[mid] < value)
end = mid - 1;
else
start = mid + 1;
}
return mid;
}
用于单元测试的伪代码会很可爱。
所以,我们可能有:
function testFirst(){
var collection = ['a','b','c','x','y','z'],first = 'a', findex = 0;
assert(seach(collection,first),findex);
}
function testLast(){
var collection = ['a','b','c','x','y','z'], last = 'z', lindex = 5;
assert(seach(collection,last),lindex);
}
最佳答案
不,您没有错过它,这就是单元测试旨在告诉您的信息。通过测试好输入和坏输入、边缘情况等,您的想法是正确的。您需要针对每种情况进行一次测试。测试将设置任何先决条件,然后断言您的计算(或任何可能的计算)符合您的期望
关于unit-testing - 请解释单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282077/