unit-testing - 请解释单元测试

标签 unit-testing testing

我对单元测试有点困惑。我看到了自动化测试等事物的值(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/

相关文章:

node.js - nock 没有拦截我的请求

java - 在 Java(Spring、MVC)中针对 DAO 和服务进行 Junit 测试

testing - 我如何在 mink/behat 测试中指定顺序?

javascript - 如何测试中止的函数?

swift - 使用或不使用主机应用程序对自定义 iOS 框架进行单元测试

ios - 如何对静态属性进行单元测试?

ios - xcode-具有多个测试目标,方案测试做什么

c# - 如何在具有自动增量键的表中查找特定实体? ( Entity Framework )

python - 如何使用nose2测试Python 2代码

perl - 这是测试 Perl 代码的好方法吗?