最近刚刚接触了 RSpec,有一些疑问,希望大家各抒己见。主要集中在 3 点。 1 为什么要先测试后写程序? 2 RSpec 可以完全取代手动测试吗? 3 之前写 java 时候使用 Junit 单元测试,二者有什么不同吗?
1 一般来说先写测试 可以提高代码质量 减少 bug 如果你本身代码质量就很高 人像编译器似的 比如 DHH 这个水平 就不需要这样了 2 不能 3 对 java 的测试不熟
熟练后有些人说效率能提高 20%,但是这个因人而论,有许多公司要求 tdd 只是因为熟悉 tdd 的人少,并没有太多公司是经历过 tdd 和非 tdd 足够长时间后真正比较经验而选择的
要我还是怀念在大公司的日子,有 QA 团队自己随便谢谢 Unit test 就行了,有时候不写也没关系
#1 楼 @tuliang 嗯 写写还是有好处的
#2 楼 @karmue 看了一些国外的教程,似乎都很推崇 TDD
左手代码,右手测试。当改动很频繁的时候,可以先写功能,等功能稳定了,附上测试。所以无所谓先后。
在 PR 之前确保自己的 spec 是无错的。
TDD 适合很小的单元测试,rspec 要考虑的很多。
先写测试。 如果你先写代码,再写测试,会非常蛋疼。所以有人提出了 TDD。 TDD 大体也可以有两种,严格的是就是测试在代码之前。不严格的就是代码和测试并行,既测试在写完一段代码不久后补上。
#8 楼 @yfractal 写测试的过程,也可以看出系统设计的好坏吧
#9 楼 @shangrenzhidao 耦合度高了不好写测试,方法复杂了不好写测试,参数多了也不好写测试。 应该是吧?
#10 楼 @yfractal 嗯,刚开始用,慢慢习惯就好了