Có những khác biệt và ràng buộc trong các tùy chọn được cung cấp bởi @Steve C và @ ashosborne1. Họ phải được chỉ định, tôi tin.
Khi nào chúng ta có thể sử dụng : File resourcesDirectory = new File("src/test/resources");
?
- 1 Khi các bài kiểm tra sẽ chỉ được chạy qua maven nhưng không qua IDE.
- 2.1 Khi các bài kiểm tra sẽ được chạy qua maven hoặc
- 2.2 thông qua IDE và chỉ có một dự án được nhập vào IDE. . Điều này sẽ hoạt động, gây ra thư mục làm việc khi bạn chạy thử nghiệm thông qua IDE giống như dự án của bạn.
- 3.1 Khi các bài kiểm tra sẽ được chạy qua maven hoặc
- 3.2 qua IDE và hơn một dự án được nhập vào IDE (khi bạn không phải là sinh viên, bạn thường nhập một số dự án), VÀ trước khi bạn chạy thử qua IDE, bạn tự cấu hình thư mục làm việc cho các bài kiểm tra của mình. Thư mục làm việc đó nên tham khảo dự án đã nhập của bạn có chứa các bài kiểm tra. Theo mặc định, thư mục làm việc của tất cả các dự án được nhập vào IDE chỉ là một. Có lẽ đó là một hạn chế
IntelliJ IDEA
duy nhất, nhưng tôi nghĩ tất cả các IDE đều hoạt động như thế này. Và cấu hình này phải được thực hiện thủ công, không tốt chút nào. Làm việc với một số thử nghiệm hiện có trong các dự án maven khác nhau, nhưng được nhập vào một dự án IDE IDE lớn, buộc chúng tôi phải nhớ điều này và không cho phép thư giãn và nhận được niềm vui từ công việc của bạn.
Giải pháp được cung cấp bởi @ ashosborne1 (cá nhân tôi thích giải pháp này) yêu cầu 2 yêu cầu bổ sung phải được thực hiện trước khi bạn chạy thử nghiệm. Dưới đây là danh sách các bước để sử dụng giải pháp này:
Tạo một thư mục kiểm tra (Nhật ký trực tuyến) và tệp (Dịch vụ đọc trực tiếp) bên trong của src / test / resource / Lần:
src / kiểm tra / tài nguyên / teva / readme
Tập tin phải được tạo trong thư mục thử nghiệm, nếu không, nó sẽ không hoạt động. Maven bỏ qua các thư mục trống.
- Ít nhất một lần xây dựng dự án thông qua
mvn clean install
. Nó cũng sẽ chạy thử nghiệm. Nó có thể là đủ để chỉ chạy lớp / phương thức thử nghiệm của bạn thông qua maven mà không xây dựng toàn bộ dự án. Kết quả là tài nguyên kiểm tra của bạn sẽ được sao chép vào các lớp kiểm tra, đây là một đường dẫn:target/test-classes/teva/readme
- Sau đó, bạn có thể truy cập thư mục bằng mã, đã được cung cấp bởi @ ashosborne1 (Tôi xin lỗi, tôi không thể chỉnh sửa mã này trong danh sách các mục này một cách chính xác):
public static final String TEVA_FOLDER = "teva"; ...
URL tevaUrl = YourTest.class.getClassLoader().getResource(TEVA_FOLDER);
String tevaTestFolder = new File(tevaUrl.toURI()).getAbsolutePath();
Bây giờ bạn có thể chạy thử nghiệm của mình thông qua IDE nhiều lần bạn muốn. Cho đến khi bạn chạy mvn sạch. Nó sẽ thả thư mục đích.
Tạo tệp trong thư mục kiểm tra và chạy maven lần đầu tiên, trước khi bạn chạy kiểm tra qua IDE là các bước cần thiết. Nếu không có các bước này, nếu bạn chỉ trong IDE tạo tài nguyên kiểm tra, sau đó viết kiểm tra và chỉ chạy qua IDE, bạn sẽ gặp lỗi. Chạy thử nghiệm thông qua mvn sao chép tài nguyên kiểm tra vào mục tiêu / lớp kiểm tra / teva / readme và chúng có thể truy cập được đối với trình nạp lớp.
Bạn có thể hỏi, tại sao tôi cần nhập nhiều hơn một dự án maven trong IDE và tại sao có quá nhiều thứ phức tạp? Đối với tôi, một trong những động lực chính: giữ các tệp liên quan đến IDA cách xa mã. Trước tiên tôi tạo một dự án mới trong IDE của mình. Đây là một dự án giả mạo, đó chỉ là một người giữ các tệp liên quan đến IDE. Sau đó, tôi nhập các dự án maven hiện có. Tôi buộc các dự án đã nhập này chỉ giữ các tệp IDEA trong dự án giả mạo ban đầu của mình. Kết quả là tôi không thấy các tệp liên quan đến IDE trong số các mã. SVN không nên nhìn thấy chúng (vui lòng không cấu hình svn / git để bỏ qua các tệp như vậy). Ngoài ra nó chỉ là rất thuận tiện.