2010-04-09 27 views
22

Tôi đã cố gắng để tải các tập tin mùa xuân config trong src/kiểm tra/nguồn classpath với lớp trừu tượng sau:mùa xuân - @ContextConfiguration không tải tập tin cấu hình trong src/kiểm tra/nguồn

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"classpath:/applicationContext.xml"}) 
public class BaseIntegrationTests { 

} 

Tôi có tệp applicationContext.xml trong src/test/resources nhưng mùa xuân không thể tải nó.

Cảm ơn bạn.

+1

Vui lòng sử dụng các khối * mã * để đặt sang một bên mã. –

+2

Tôi nghĩ bạn không cần '/' chỉ cần sử dụng 'classpath: applicationContext.xml' – ant

+0

Điều này phù hợp với nhu cầu của tôi: http://stackoverflow.com/questions/10385452/location-of-spring-context-xml –

Trả lời

22

Để chính xác, đó là nội dung của thư mục đầu ra kiểm tra (target/test-classes) nằm trên đường dẫn lớp học, chứ không phải src/test/resources. Nhưng các tài nguyên dưới src/test/resources được sao chép vào thư mục đầu ra thử nghiệm theo mục tiêu resources:testResources (được ràng buộc theo mặc định cho giai đoạn process-test-resources). Có điều đó nói rằng, mã của bạn có vẻ tốt và nguồn lực cho mã nguồn thử nghiệm nên đã được sao chép hoặc bởi IDE của bạn hoặc bởi Maven khi chạy thử nghiệm và do đó nên có sẵn trên đường dẫn lớp. Vì vậy, phải có cái gì khác sai. Tôi có thể thấy rằng lớp của bạn là một lớp cơ sở cho các bài kiểm tra tích hợp. Bạn có cấu hình bất cứ điều gì ưa thích trong pom của bạn? Bạn có thể hiển thị nó?

+0

tài nguyên kiểm tra quá trình đã giúp. Cố định pom. Cảm ơn bạn! – Azee

+0

tài nguyên của tôi nằm trong thư mục lớp thử nghiệm và tôi có thể tải tệp bằng 'Myclass.class.getClassLoader.getResource ("/my/path ")'. nhưng không hoạt động với '@ContextConfiguration (location =" classpath:/my/path ")' – herau

1

Bạn dường như đang sử dụng maven và cố gắng chạy thử nghiệm từ trong nhật thực. Kiểm tra thư mục buil (target/test-classes/) cho applicationContext.xml. Nếu nó không có ở đó, bạn phải xây dựng trước.

5

Có một reported bug bằng cách sử dụng phụ thuộc kiểm tra mùa xuân (bao gồm SpringJUnit4ClassRunner) với các phiên bản của JUnit> 4.4.

Nếu bạn đang sử dụng phiên bản JUnit mới hơn 4.4, hãy thử di chuyển xuống 4.4 và xem có giải quyết được sự cố của bạn hay không.

0

Tôi nghĩ rằng tôi có một vấn đề simillar, tôi phát hiện ra rằng tôi ứng dụng context.xml lại không nằm về mục tiêu/thử nghiệm lớp học/neighter trên src/kiểm tra/nguồn

16

Hãy thử bằng cách sử dụng * để nó có thể tìm kiếm để classpath của bạn

@ContextConfiguration(locations={"classpath*:applicationContext.xml"}) 
+2

'*' làm gì so sánh với '{" classpath: applicationContext.xml "'? Tìm kiếm bất kỳ độ sâu nào của classpath? Tôi không thể tìm thấy tài liệu giải thích điều này. – markdsievers

+0

@markdsievers Nó kết hợp nhiều tệp thành một thay vì chọn tệp đầu tiên được tìm thấy.Xem: https://stackoverflow.com/a/3294506/344480 – Matthias

3

bối cảnh ứng dụng của bạn phải được bao gồm trong classpath và đặt *:

@ContextConfiguration(locations = { "classpath:*/application-context.xml" }) 
0

Nếu bạn đang sử dụng Maven và chạy thử nghiệm c ases from eclipse, nhấp chuột phải vào dự án> Maven> cập nhật maven (ALTF5) có thể phù hợp với bạn.

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