Tôi đã đọc rất nhiều bài báo, đã xem hàng tấn các chương trình truyền hình về TDD, nhưng tôi vẫn đang vật lộn với việc sử dụng nó trong dự án thế giới thực. Vấn đề chính của tôi là tôi không biết bắt đầu từ đâu, thử nghiệm nào sẽ là bài kiểm tra đầu tiên. Giả sử tôi phải viết thư viện khách hàng gọi các phương thức của hệ thống bên ngoài (ví dụ: thông báo). tôi muốn khách hàng này để làm việc như sauLàm thế nào để chọn điểm bắt đầu TDD trong một dự án thế giới thực?
NotificationClient client = new NotificationClient("abcd1234"); // client ID
Response code = client.notifyOnEvent(Event.LIMIT_REACHED, 100); // some params of call
Có một số dịch và thông điệp chuẩn bị định dạng đằng sau hậu trường, vì vậy tôi muốn ẩn nó từ các ứng dụng khách hàng của tôi.
Tôi không biết bắt đầu từ đâu và như thế nào. Tôi có nên tạo một số lớp học thô cho thư viện này không? Tôi nên bắt đầu với thử nghiệm NotificationClient như sau
public void testClientSendInvalidEventCommand() {
NotificationClient client = new NotificationClient(...);
Response code = client.notifyOnEvent(Event.WRONG_EVENT);
assertEquals(1223, code.codeValue());
}
Nếu vậy, với thử nghiệm như vậy tôi buộc phải viết thực hiện làm việc hoàn chỉnh cùng một lúc, không có bước nhỏ như bang TDD. Tôi có thể thử nghiệm tính toán sosmething trong Khách hàng nhưng sau đó tôi phải biết điều này để được chế giễu trả trước, vì vậy tôi cần một số mong muốn trả trước được thực hiện.
Có lẽ tôi nên bắt đầu từ phía dưới, kiểm tra thành phần định dạng thông điệp này trước và sau đó sử dụng nó trong thử nghiệm ứng dụng khách phải không?
Cách nào phù hợp để đi? Chúng ta có nên bắt đầu từ đầu (làm thế nào để đối phó với bước tiến lớn này)? Chúng ta có thể bắt đầu với bất kỳ lớp nào thực hiện một phần nhỏ của tính năng mong muốn (như Formatter trong ví dụ này)?
Nếu tôi biết nơi để đạt được các bài kiểm tra của mình, tôi sẽ dễ dàng tiếp tục.
Nhưng cách tìm các lớp đó để viết các bài kiểm tra đơn vị và bắt đầu từ đâu? Tôi cho rằng tôi cần phải thiết lập một số lớp học để có thể chọn điểm bắt đầu cho TDD. Nhưng sau đó, nơi này nên được? Nó có nên ở các cạnh của hệ thống không, hoặc nó có thể ở giữa Formatter giống như hệ thống được đề cập không? –
Bạn có thể TDD từ dưới lên trên hoặc từ trên xuống dưới. Tôi không thấy Formatter phù hợp với ví dụ của bạn như thế nào. Với thử nghiệm, bạn nên viết số lượng ** tối thiểu ** mã cần thiết để có được nó. –