2011-01-05 37 views
5

Thực tiễn tốt nhất về tuyên bố Debug.Print là gì?C#: Thực tiễn tốt nhất Debug.Print

Tôi có nên xả rác các phương pháp lớp học của mình với các tuyên bố Debug.Print hoặc tôi có nên tránh hoàn toàn Debug.Print không?

Nếu tuyên bố Debug.Print chấp nhận được, tôi có nên sử dụng Trace.Print hoặc EventLog không?

Câu hỏi Debug.Print có cần thiết với các bài kiểm tra đơn vị không? Tôi có thể tránh các câu lệnh Debug.Print với các bài kiểm tra đơn vị được viết tốt không?

Trả lời

5

Debug.Print được chấp nhận, không phải vì chúng sẽ được biên soạn trong bản phát hành bản phát hành của bạn. Tuy nhiên, "lừa đảo" mã của bạn với nó không có vẻ đặc biệt hiệu quả hoặc hữu ích.

Bạn có thể thêm nó trong khi gỡ lỗi một khu vực mã cụ thể. Khi bạn xác định lỗi, bạn có thể viết một bài kiểm tra đơn vị để bao gồm trường hợp, sửa lỗi và sau đó xóa cuộc gọi đến Debug.Print.

Điều tôi đôi khi sử dụng và để lại trong cơ sở mã là Debug.Assert - nó giống như điểm dừng tích hợp nếu ứng dụng của tôi không ở trạng thái mong đợi, mà chỉ là một mạng an toàn bổ sung trong khi thực hiện cả thử nghiệm tự động và thủ công .

Debug.Print không cần thiết trong các thử nghiệm đơn vị và không được thêm vào vì mục đích kiểm tra đơn vị.

+0

Lưu ý rằng các câu lệnh 'Debug.Assert' cũng được [xóa trong bản dựng phát hành] (http://stackoverflow.com/a/13383661/1497596). (Trừ khi 'DEBUG' đã được thêm vào cấu hình Release.) Hãy cân nhắc việc sử dụng [' Trace.Assert'] (http://stackoverflow.com/a/6752696/1497596) thay vào đó nếu bạn muốn xác nhận của mình thực thi trong bản dựng Release . – DavidRR

2

Bạn không cần Debug.Print với tất cả các bài kiểm tra đơn vị! Điểm của các bài kiểm tra đơn vị là bạn tự động nhận được một dấu hiệu cho dù thử nghiệm thành công hay thất bại, bạn không cần phải tìm các bản in gỡ lỗi cho điều đó.

NUnit là thư viện kiểm tra đơn vị dễ sử dụng.

Để truy tìm hoặc ghi nhật ký, bạn không cần phải xả rác mã của mình bằng cách gỡ lỗi bản in cho điều đó. Hãy thử interception with Castle Windsor hoặc các khung công tác khác hỗ trợ AOP.

0

Tôi chưa bao giờ sử dụng Debug.Print hoặc Trace.Print. Tôi viết một số lượng tốt các bài kiểm tra đơn vị. Tôi đã không bao giờ thấy rằng tôi cần phải sử dụng các đối tượng Debug hoặc Trace với các bài kiểm tra đơn vị mà tôi viết. Tôi cố gắng thử nghiệm đơn vị càng nhiều càng tốt, tuy nhiên.

Các vấn đề liên quan