Khi xảy ra thay đổi mã chính (bộ POJO mới, tái cấu trúc ứng dụng chính, v.v.), các kiểm tra đơn vị có xu hướng được nhận xét thay vì làm lại.
Tôi luôn cố gắng giữ cấu trúc lại và thay đổi chức năng riêng biệt. Khi tôi cần làm cả hai, tôi thường cam kết tái cấu trúc trước.
Khi tái cấu trúc mã mà không thay đổi chức năng, các kiểm tra đơn vị hiện có được cho là giúp đảm bảo rằng tái cấu trúc không vô tình phá vỡ chức năng. Vì vậy, đối với một cam kết như vậy, tôi sẽ coi việc vô hiệu hóa hoặc loại bỏ các bài kiểm tra đơn vị là một dấu hiệu cảnh báo chính. Bất kỳ nhà phát triển nào làm điều đó nên được yêu cầu không làm như vậy khi mã đang được xem xét.
Có thể các thay đổi không thay đổi chức năng vẫn khiến các bài kiểm tra đơn vị bị lỗi do các bài kiểm tra đơn vị thiếu sót. Nếu bạn hiểu mã bạn đang thay đổi thì nguyên nhân của các lỗi kiểm tra đơn vị như vậy thường ngay lập tức rõ ràng và dễ khắc phục.
Ví dụ: nếu một hàm có ba đối số, một thử nghiệm đơn vị bao gồm sự tương tác giữa hai đối số đầu tiên cho hàm có thể không được quan tâm để cung cấp một giá trị hợp lệ cho đối số thứ ba. Lỗ hổng này trong bài kiểm tra đơn vị có thể bị lộ bởi việc tái cấu trúc mã đã kiểm tra, nhưng rất dễ sửa nếu bạn hiểu mã phải làm gì và kiểm tra đơn vị đang kiểm tra.
Khi thay đổi chức năng hiện có, thông thường cũng cần phải thay đổi một số bài kiểm tra đơn vị. Trong trường hợp này, kiểm tra đơn vị giúp đảm bảo rằng mã của bạn thay đổi chức năng như dự định và không có tác dụng phụ ngoài ý muốn.
Khi sửa lỗi hoặc thêm chức năng mới, người ta thường cần thêm nhiều bài kiểm tra đơn vị. Đối với những người này có thể hữu ích để cam kết kiểm tra đơn vị trước và cam kết sửa lỗi hoặc chức năng mới sau. Điều đó giúp dễ dàng xác minh rằng các thử nghiệm đơn vị mới không vượt qua với mã cũ hơn nhưng vượt qua với mã mới hơn. Cách tiếp cận này không hoàn toàn không có nhược điểm, do đó, cũng tồn tại các đối số có lợi cho việc cam kết cả hai bài kiểm tra đơn vị mới và cập nhật mã đồng thời.
Thời gian tốt hơn dành cho các bài kiểm tra tích hợp bao gồm các trường hợp sử dụng, điều này làm cho các bài kiểm tra phạm vi nhỏ hơn ít / không quan trọng.
Có một số yếu tố của sự thật này. Nếu bạn có thể nhận được phạm vi bảo hiểm của các lớp thấp hơn của ngăn xếp phần mềm với các thử nghiệm nhắm mục tiêu vào các lớp cao hơn của ngăn xếp phần mềm, các thử nghiệm của bạn có thể hữu ích hơn khi tái cấu trúc mã.
Tôi không nghĩ rằng bạn sẽ tìm thấy một thỏa thuận về sự khác biệt chính xác giữa một bài kiểm tra đơn vị và một bài kiểm tra tích hợp. Và tôi sẽ không lo lắng nếu bạn có một trường hợp thử nghiệm mà một nhà phát triển gọi thử nghiệm đơn vị và một cuộc gọi khác là thử nghiệm tích hợp, miễn là họ có thể đồng ý rằng đó là một trường hợp thử nghiệm hữu ích.