前言
单元测试是常用的。似乎没有人没有他,每个人都会编写测试,而在任何严肃的项目中缺席,至少会造成误解。但是,许多人认为测试是一种仪式,目的是不激怒“编程之神”。就像,这是必要的。为什么?因为。
我会说些恐怖的话。
拿什么作为测试单位都没有关系。测试如何分组无关紧要。它们是在代码之前还是之后编写都无所谓。TDD还是TDD?没关系。所占份额?别该死。毕竟,可能根本没有任何测试。所有这些都是完全不相关的。满足软件要求很重要。
单元测试不是一种仪式,而是一种很好的工作工具,使您可以更接近满足这些要求。并且该工具需要能够正确使用。
等一下,科学与数学在哪里进来?
内容
- 保修和概率
- 编程理论
- 测试作为定理的证明
- 重要和不重要
- 我需要测试吗
我将不会第100次讨论为什么需要测试,测试有多少帮助,记录,简化开发和重构过程,关闭回归等。
我想写的是如何在测试中做出一些超出一系列义务,技术细微差别和管理要求的事情。因此,测试不是拯救摇摇欲坠的结构免遭立即破坏的支柱,而是我们的计划坚定而自信地立足的基础。
, — . — . — . , , , , .
. . : , , 100%, .
.
"". , , , , . , , . "" "". , . , , "" , , . , "", , , .
, , , . , — , .
, , .
. "", "". "" "" "".
"" , , . "" — , , ( , ).
"" , , , , — . "" "" , , "".
"" , "" "", "" "", .
. , std::vector
, clear
. , "", .
? , (capacity). , "":
clear()
, size()
;clear()
, empty()
true
;clear()
, capacity()
, clear()
.clear()
, , , .
"" "":
test_case(" `clear()` ")
{
std::vector<int> v{1, 2, 3, 4};
v.clear();
check(v.size() == 0);
}
, "", ? .
, , . — , "". , "" "" , size()
. "".
, "", std::vector<int> v{1, 2, 3, 4}
. . , "", ? , , . ? , , ( , ).
"" , , : "", , , . , "".
"", size()
, . : , . "", .
"" "".
, "", ( , ) .
, , , (, , - — — ). , "" "". — .
, , : , ( TDD ). — "". , , "", TDD, .
, . , , . , , .
, , , .
— , . , , . , . , .
因此,我们的隐喻“科学”(即代码)和“客观现实”(即测试)彼此接近,从未达到理想状态,而是增加了期望的概率。