Tôi chỉ đọc bài viết Programming by Coincidence. Ở cuối trang có bài tập. Một vài đoạn mã là các trường hợp "lập trình trùng hợp". Nhưng tôi không thể tìm ra lỗi trong đoạn này:'Lập trình bởi trùng hợp ngẫu nhiên' Tập thể dục: Nhà văn tệp Java
Mã này có nguồn gốc chung Bộ theo dõi Java. Hàm ghi một chuỗi vào tệp nhật ký. Nó vượt qua kiểm tra đơn vị của nó, nhưng không thành công khi một trong những nhà phát triển Web sử dụng nó. Sự trùng hợp nào?
public static void debug(String s) throws IOException {
FileWriter fw = new FileWriter("debug.log", true);
fw.write(s);
fw.flush();
fw.close();
}
Điều gì sai về điều này?
Không phải là trường hợp các bài kiểm tra đơn vị không đảm bảo 100% chống lừa đảo? Ý tôi là, có rất nhiều sự trùng hợp mà chúng tôi đang đối mặt kể từ khi chúng tôi bắt đầu lập trình :) – bragboy
@ Bragaadeesh: Đây là một thử nghiệm đơn vị không tốt vì nó vi phạm ["nguyên tắc trách nhiệm duy nhất"] (http: //en.wikipedia .org/wiki/Single_responsibility_principle). Nếu bạn đang thử nghiệm nếu phương thức ghi chính xác chuỗi, bạn nên lấy tệp I/O ra khỏi nó. Nó sẽ nhận được một 'java.io.Writer' được tạo ra từ nơi khác và ghi vào nó. –