Tôi đang cố gắng viết các bài kiểm tra tích hợp cho một bộ điều khiển trong ứng dụng mvc mùa xuân của chúng tôi. Bộ điều khiển gọi một lớp dịch vụ mà lần lượt gọi một dao để đọc/ghi dữ liệu từ kho lưu trữ. DAO cần tra cứu một số cấu hình. Bean cấu hình được định nghĩa trong WEB-INF/applicationContext.xml.Viết các bài kiểm tra Junit cho ứng dụng Spring MVC mà nội bộ dựa vào ContextLoader.getCurrentWebApplicationContext()
Tôi đang sử dụng một cái gì đó như thế này:.
cấu hình config = (Configuration) ContextLoader.getCurrentWebApplicationContext() getBean ("config");
riêng String namespace = config.getProperty ("someproperty");
Các thuộc tính được lưu trữ trong zookeeper vì vậy tôi không sử dụng hiện vật quản lý tài sản của mùa xuân.
Vấn đề là khi chạy thử nghiệm JUnit ContextLoader.getCurrentWebApplicationContext() luôn trả về giá trị rỗng.
Tôi đã cho đến nay nhìn những phương pháp sau đây:
1. Cách tiếp cận Ted Young (chỉ cần tìm kiếm google cho xét nghiệm mùa xuân hội nhập MVC ted trẻ)
2. https://github.com/SpringSource/spring-test-mvc
3. trang web này .. câu hỏi/8.464.919/đơn vị thử nghiệm-một-servlet-that-phụ thuộc-on-suối-webapplicationcontextutils-getre
4. Sử dụng Selenium/JWebunit
5. http://confluence.highsource.org/display/Hifaces20/Hifaces20+Testing+package+-+testing%2C+tracing+and+debugging+web+applications+with+Jetty
1 không giải quyết được vấn đề này. WebApplicationContext vẫn null
2 tiểu bang hỗ trợ cho WebApplicationContext sẽ có sẵn vào mùa xuân 3.2
3. Tôi không hiểu điều này. Tôi lấy testApplicationContext và getServletContext() từ đâu?
4. Tôi không muốn đi theo cách này vì đây là thử nghiệm blackbox hoàn toàn.
5. Tôi hiện đang xem xét 5. Nhưng điều này đòi hỏi phải khởi động một thùng chứa servlet. Có cách nào khác không?
Tôi sẽ đánh giá cao bất kỳ trợ giúp nào bạn có thể cung cấp.
Cảm ơn PixalSoft
@Ted trẻ SO đã không cho phép tôi để hoàn thành những gì tôi đã saying.With loader = MockWebApplicationContextLoader, nó không được coi là có sẵn như là contextloader mặc định chính xác như ContextLoader Xuân cư xử khi webapp được khởi tạo bởi một servletcontainer? Có một cái gì đó đặc biệt mà tôi cần làm để có được một xử lý trên MockWebApplicationContextLoader không? Việc tiêm đối tượng config làm việc cho các đối tượng singleton. Nhưng tất cả không thể là singleton. Việc truyền một đối tượng config vào mọi constructor có vẻ quá tẻ nhạt. Bây giờ, tôi đã tạo ra một lớp có một đối tượng cấu hình tĩnh, được autowired thông qua một phương thức setter. Tôi sẽ xem xét ApplicationContextAware.Many thx
Xin chào, Cảm ơn bạn đã trả lời. Chúng ta không thể lưu trữ các thuộc tính trong một tệp thuộc tính vì chúng ta đang ở trong một môi trường phân tán và chúng ta cần lưu trữ các thuộc tính trong zookeeper vì lý do đó. Ngoài ra, tôi không nghĩ rằng việc sử dụng ContextLoader.getCurrentWebApplicationContext() nên ngăn chặn một ứng dụng được kiểm tra đơn vị. – user1373927