Người điều hành Lưu ý: Hiện đã có 39 câu trả lời được đăng ở đây (một số đã bị xóa). Trước khi bạn đăng câu trả lời của mình , hãy xem xét liệu bạn có thể thêm điều gì đó có ý nghĩa vào cuộc thảo luận hay không. Bạn có nhiều khả năng chỉ lặp lại những gì người khác đã nói.
Thỉnh thoảng tôi thấy mình cần phải tạo một phương thức riêng tư trong lớp công khai chỉ để viết một số bài kiểm tra đơn vị cho nó.
Thông thường điều này là do phương thức chứa logic được chia sẻ giữa các phương thức khác trong lớp và việc kiểm tra logic một cách gọn gàng hơn hoặc lý do khác có thể là tôi muốn kiểm tra logic được sử dụng trong các luồng đồng bộ mà không phải lo lắng về các vấn đề luồng. .
Có phải những người khác thấy mình làm điều này, bởi vì tôi không thực sự thích làm điều đó ?? Cá nhân tôi nghĩ rằng tiền thưởng vượt xa các vấn đề về việc công khai phương thức mà không thực sự cung cấp bất kỳ dịch vụ nào ngoài lớp ...
CẬP NHẬT
Cảm ơn câu trả lời của mọi người, dường như đã khơi gợi sự quan tâm của mọi người. Tôi nghĩ rằng sự đồng thuận chung là thử nghiệm nên xảy ra thông qua API công khai vì đây là cách duy nhất một lớp sẽ được sử dụng và tôi đồng ý với điều này. Một vài trường hợp tôi đã đề cập ở trên, nơi tôi sẽ làm điều này ở trên là những trường hợp không phổ biến và tôi nghĩ rằng lợi ích của việc làm nó là xứng đáng.
Tuy nhiên, tôi có thể thấy mọi người đều cho rằng điều đó không bao giờ thực sự xảy ra. Và khi nghĩ về nó nhiều hơn một chút, tôi nghĩ việc thay đổi mã của bạn để phù hợp với các bài kiểm tra là một ý tưởng tồi - sau tất cả, tôi cho rằng kiểm thử là một công cụ hỗ trợ theo cách và thay đổi một hệ thống thành 'công cụ hỗ trợ' nếu bạn muốn, là trắng trợn thực hành xấu.
@VisibileForTesting
chú thích để thực hiện các phương pháp như vậy - Tôi khuyên bạn nên làm điều này để lý do cho phương pháp không được private
ghi lại đúng cách.