我刚开始一个新项目,现在ASP.NET MVC以极其可组合的方式设计,我认为这可能是开始单元测试的好时机。我的大多数代码都是新鲜的,我在编写实际的生产代码之前正在编写测试。
但令我沮丧的是,我花了很多时间来修复测试中的错误,而不是修复我的生产测试中的任何错误。
我的典型工作流程最终会是这样的:
如果你考虑一下,这有点令人期待:单元测试涉及手动产生输出,因此容易出错;用严格的语言和良好的编码实践编写的代码具有非常自动指定的行为。
当然,有些奇怪的时候我的生产代码是测试失败的真正原因,但它确实相当罕见。
当然,没有理由完全取消单元测试;有时我完全不相信自己的代码。另一方面,我开始觉得它并不是那么有价值 - 特别是测试第一哲学。
其他人都有这种感觉吗?
答案 0 :(得分:8)
我觉得你在那里,我在编写单元测试时发现了一些有用的东西,使它们更加坚固:
Richard Dingwall's blog有很多关于单元测试和TDD最佳实践的文章,其中很多都是关于MVC单元测试的。
答案 1 :(得分:1)
首先,TDD需要时间来适应。
我们作为一个团队在一年前开始使用TDD。最初,我们首先编写代码(类/单个模块),然后编写涵盖该代码的测试。
然后我们继续编写与代码并行编写测试(编写方法/方法组,然后编写覆盖这些方法的测试用例)。在此期间,我们使用覆盖工具来检查我们的覆盖范围。
现在这样做了一年后,团队精通测试优先方法。 @Scozzard提到了有关使用AAA /模拟框架的有效观点。
答案 2 :(得分:0)
如果您的测试将实际结果与手写预期值(偶尔输入错误)进行比较,您可以通过重构测试来获得一些里程数。不是验证方法X返回与测试实例相同的实例,而是验证方法返回的实例是否与测试实例具有相同的重要属性。