- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我以前从未使用过单元测试,所以我试一试 CxxTest。我写了一个测试来检查函数是否正确地对 std::vector 进行了排序。首先,我确保在 vector 未排序时测试失败,然后作为健全性检查,我测试了 std::sort 是否有效(当然,它确实有效)。到目前为止,还不错。
然后我开始编写自己的排序函数。但是,我犯了一个错误,函数没有正确排序。由于我的测试没有在排序时输出向量的中间状态,因此很难判断我的排序函数哪里出了问题。我最终使用 cout
语句(我本可以使用调试器)来查找我的 bug,并且在我知道我的排序函数工作之后才使用单元测试。
我是不是做错了什么?我以为单元测试就这么简单
1) Write test
2) Write function
3) Test function
4) If test fails, revise function
5) Repeat 3 and 4 until test passes
我用的过程比较像
1) Write test
2) Write function
3) Test function
4) If test fails, debug function until it works correctly
5) Repeat 3 (even though function is already known to work)
我觉得我的流程不是真正的 TDD,因为我的排序函数的设计不是由我编写的测试驱动的。我应该写更多的测试,例如在排序时检查向量中间状态的测试?
最佳答案
测试不应该为您调试代码。
I feel like my process was not truly TDD
你写了一个测试。它发现了一个错误。你修复了这个错误。你的测试通过了。系统有效!
这就是测试驱动开发的本质。当您遇到错误时,您的测试会告诉您,当您完成时,它们会告诉您。
无论如何,因为您没有实现纯粹的 TDD 或纯粹的 OOP 或任何心理障碍而感到内疚。前进并富有成效。
关于unit-testing - 如何对 std::vector 的排序进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1783922/
我是一名优秀的程序员,十分优秀!