我认为你的想法是正确的,但我认为你正在把它变成一个更大的交易。如果您开始进行 TDD,您的第一反应可能是“这是它吗?”。稍后,你应该说“啊哈”!
主要是你获得 nUnit,学习教程,然后确保在编写实现之前为你所做的一切编写测试。您可能会跳过为属性访问器编写测试,但任何需要任何计算的东西,您都应该先编写测试。
所以,假设您正在测试一个计算器的 Add(int 1, int 2),您首先想到的是,“我该如何破解它”。我认为可能出错的地方是:负数、零和溢出。诀窍是想象要创建 Add() 方法的人可能犯的每一个错误,然后针对它编写一个测试。所以,我可能会写:
Assert.AreEqual(5, calc.Add(2, 3), "Adding positives not as expected");
Assert.AreEqual(-5, calc.Add(-2, -3), "Adding negatives not as expected");
Assert.AreEqual(-2, calc.Add(-3, 2), "Adding one positive and one negative not as expected");
// your framework might provide a cleaner way of doing this:
try {
int result = calc.Add(Int32.Max, 5);
Assert.Fail("Expected overflow error. Received: " + result);
} catch(Exception e) {
// This should be a more specific error that I'm not looking up
}
因此,如您所见,我尝试做的是找出 Add() 方法可能无法工作的原因,然后对其进行测试。我还寻找了有趣的极端情况并明确定义了我所期望的行为。然后现在我可以开始编写 Add() 方法了。
现在,虽然这不是那么好,但您知道您的 Add() 方法将坚如磐石,因为当您开始创建将 Sin() 方法与 Sqrt() 方法以及 Add () 方法。
无论好坏,这都是测试驱动开发。现在不要太纠结于接口或依赖注入。如果您需要,可以稍后再提供。