cách viết bài kiểm tra đơn vị vào các lớp bên trong ???kiểm tra lớp nội bộ
Trả lời
Bạn viết các bài kiểm tra xác định hành vi của giao diện bên ngoài của lớp cấp cao nhất. Cho dù lớp đó sử dụng các lớp bên trong để thực hiện hành vi đó hay không, là một chi tiết thực hiện của lớp, và các bài kiểm tra không cần phải biết bất cứ điều gì về nó.
Nếu lớp nội bộ không thể được kiểm tra đầy đủ thông qua giao diện cấp cao nhất, thì tốt nhất nên di chuyển lớp nội bộ ra và kiểm tra trực tiếp lớp mới. Muốn kiểm tra các lớp bên trong là một mùi mã mà lớp bên trong có thể đủ quan trọng để trở thành một lớp cấp cao nhất.
Khi sử dụng MS Visual Studio cho bài kiểm tra đơn vị, bạn phải chỉ cần tạo một private Accessor. Nội bộ nó hoạt động với sự phản xạ tôi nghĩ. Chỉ cần nhìn vào mã được tạo ra.
Bạn không kiểm tra trực tiếp. Nó sẽ được kiểm tra thông qua lớp mà nó được xác định.
Và, nếu bạn áp dụng TDD, vì thẻ câu hỏi này hiện ngụ ý, kiểm tra bạn chỉ viết cuộc gọi đó cho lớp bên trong là gì? Tôi có nghĩa là nó không thể là một lớp học tiêu chuẩn, thuộc sở hữu tư nhân của lớp bạn đang làm việc?
Chúng tôi đã sử dụng lớp trợ giúp sử dụng phản chiếu để tải và gọi các phương thức trên lớp nội bộ. Nó cũng có thể thay đổi khả năng tiếp cận tại thời gian biên dịch bằng cách sử dụng biểu tượng DEBUG ví dụ
#if DEBUG
public
#else
internal
#endif
class MyInternalClass
{
...
}
Tuy nhiên câu trả lời Esko Luontola là chính xác hơn vì nó là chức năng và doanh nghiệp yêu cầu đó là quan trọng nhất. Nó rất dễ dàng để quá tập trung vào phạm vi mã hơn là kiểm tra các khu vực nguy cơ quan trọng.
Không phải tôi muốn giới thiệu nó, nhưng bạn cũng có thể sử dụng InternalsVisibleToAttribute.
Xem giải thích chi tiết từ http://msdn.microsoft.com/en-us/library/bb385974.aspx
Trang được liên kết không còn tồn tại – Catch22
- 1. Kiểm tra nội bộ của các chức năng trong Haskell
- 2. angularjs - bộ kiểm tra kiểm tra
- 3. Làm cách nào để bạn kiểm tra các lớp đơn vị sử dụng bộ hẹn giờ trong nội bộ?
- 4. Kiểm tra biến lớp RSpec
- 5. Lớp kiểm tra JUnit chung
- 6. PHPUnit - kiểm tra autoloader lớp
- 7. kiểm tra nội dung của chuỗi nhập
- 8. Kiểm tra Rspec cho nội dung iframe
- 9. Tạo Lớp Kiểm tra trong IntelliJ
- 10. Chạy bộ kiểm tra JUnit bằng Maven
- 11. Cách kiểm tra mã không đồng bộ
- 12. Bộ lọc kiểm tra tích hợp Grails
- 13. Kiểm tra đơn vị trong QTestLib - chạy thử nghiệm/kiểm tra đơn trong lớp/tất cả các bài kiểm tra
- 14. Kiểm tra thuộc tính lớp python
- 15. Kiểm tra các lớp thẻ với watir?
- 16. Junit kiểm tra phạm vi biến lớp
- 17. Kiểm tra PDF chức năng (Tự động kiểm tra nội dung PDF)
- 18. Công cụ sửa đổi truy cập "# nội bộ" C# khi thực hiện kiểm tra đơn vị
- 19. Moq làm thế nào để bạn kiểm tra các phương pháp nội bộ?
- 20. Kiểm tra trang mạng nội bộ sử dụng xác thực Windows
- 21. Kiểm tra đơn vị Trạng thái nội bộ của cấu trúc dữ liệu
- 22. làm thế nào để đơn vị kiểm tra chức năng nội bộ trong plugin jquery?
- 23. Lớp Mock trong lớp học dưới kiểm tra
- 24. NUnit, TestDriven.Net: Kết quả kiểm tra trùng lặp với các lớp kiểm tra từng phần
- 25. Kiểm tra trực tiếp Bộ chọn jQuery
- 26. bộ kiểm tra perl cho API
- 27. Kiểm tra API Google Maps cục bộ
- 28. phương thức công cộng so với nội bộ trên một lớp nội bộ
- 29. Có thể kiểm tra :: Các bài kiểm tra lớp được chạy song song không? (hoặc làm thế nào để tính ra các bài kiểm tra siêu lớp)
- 30. ScalaTest: kiểm tra nội dung của một chuỗi với ShouldMatcher
bạn nói bạn sẽ không đề xuất điều này, nhưng bạn sẽ giải quyết điều gì đó như thế này? http://stackoverflow.com/questions/15440935/how-to-test-internal-class-library –
@Thomas: chính xác như Esko nói trong câu trả lời của anh ấy. Bạn kiểm tra các API nội bộ gián tiếp thông qua giao diện công khai của mình hoặc bạn quảng bá các API nội bộ của mình cho công khai và kiểm tra chúng trực tiếp. –