我读过大量的文章,看过大量有关TDD的截屏视频,但我仍然在现实世界的项目中使用它。我的主要问题是我不知道从哪里开始,什么测试应该是第一个。 假设我必须编写客户端库调用外部系统的方法(例如通知)。 我希望此客户端的工作方式如下如何在真实世界的项目中选择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状态没有婴儿的步骤。我可以在客户端嘲弄某些东西,但是我必须知道这件事会被嘲笑,所以我需要一些前期设计。
也许我应该从底层做起,测试这个消息格式化部件,然后再使用它在正确的客户端测试?
什么方法是正确的?我们应该总是从顶端开始(如何处理这个巨大的步骤)? 我们可以从任何实现所需功能的小部分开始(如本例中的Formatter)吗?
如果我知道在哪里碰到我的测试,那对我来说会更容易。
但如何找到这些类写单元测试和从哪里开始?我想我需要设置一些类,以便能够选择TDD的起点。但是,这一点应该在哪里?它应该在系统的边缘,还是可以在系统中间 - 就像Formatter提到的那样? –
您可以自下而上或自上而下进行TDD。我看不出Formatter如何适合你的例子。给定一个测试,你应该写**必需的**最少量的代码让它通过。 –