【发布时间】:2011-11-06 08:04:06
【问题描述】:
我已阅读大量文章,看过大量有关 TDD 的截屏视频,但我仍在为在现实世界项目中使用它而苦苦挣扎。我的主要问题是我不知道从哪里开始,什么测试应该是第一个。 假设我必须编写调用外部系统方法(例如通知)的客户端库。 我希望这个客户按如下方式工作
NotificationClient client = new NotificationClient("abcd1234"); // client ID
Response code = client.notifyOnEvent(Event.LIMIT_REACHED, 100); // some params of call
幕后有一些翻译和消息格式准备,所以我想对我的客户端应用程序隐藏它。
我不知道从哪里以及如何开始。 我应该为这个库编写一些粗略的类吗? 我应该从如下测试 NotificationClient 开始
public void testClientSendInvalidEventCommand() {
NotificationClient client = new NotificationClient(...);
Response code = client.notifyOnEvent(Event.WRONG_EVENT);
assertEquals(1223, code.codeValue());
}
如果是这样,通过这样的测试,我不得不立即编写完整的工作实现,没有像 TDD 所述的婴儿步骤。我可以在 Client 中模拟出一些东西,但是我必须预先知道要模拟这个东西,所以我需要进行一些前期设计。
也许我应该从底层开始,先测试这个消息格式化组件,然后在正确的客户端测试中使用它?
哪条路是正确的? 我们是否应该始终从头开始(如何处理所需的这一巨大步骤)? 我们可以从实现所需功能的一小部分的任何类开始(如本例中的 Formatter)吗?
如果我知道在哪里进行测试,那么我继续进行会容易得多。
【问题讨论】:
标签: unit-testing tdd