Có cách nào tại thời điểm thử nghiệm, để đưa thuộc tính vào tệp kê khai Java (hoặc tiêm toàn bộ tệp kê khai) không?Kiểm tra đơn vị Java thiết lập thuộc tính kê khai
Chúng tôi đang đọc giá trị từ tệp kê khai (số phiên bản) mà tại thời điểm thử nghiệm sẽ được giải quyết thành không.
Cho đến nay, chúng tôi đã thử đặt tệp MANIFEST.MF được mã hóa cứng vào thư mục gốc thử nghiệm của chúng tôi, nhưng nó không hoạt động.
Đây là mã chúng tôi sử dụng để đọc các biểu hiện:
private Attributes getManifest() {
URLClassLoader cl = (URLClassLoader) getClass().getClassLoader();
Manifest manifest;
try {
URL url = cl.findResource("META-INF/MANIFEST.MF");
manifest = new Manifest(url.openStream());
} catch (IOException e) {
throw Throwables.propagate(e);
}
return manifest.getMainAttributes();
}
Như một phương sách cuối cùng chúng tôi sẽ quấn các chức năng mà đọc manifest và chế nhạo nó, nhưng đây là những xét nghiệm hội nhập, và có nghĩa vụ phải là hộp đen (tức là, chúng ta đang tránh chế nhạo).
Thông tin bổ sung: Java 7, Chạy thử nghiệm Junit trong IntelliJ hoặc từ Gradle.
Vì vậy, khi bạn chạy một kiểm tra, nơi được MANIFEST.MF nằm, chính xác? –
Tại sao bạn muốn sửa đổi tệp kê khai java khi bạn đang chạy thử nghiệm (có lẽ là JUnit?) Khi thử nghiệm là một ứng dụng java độc lập chứ không phải ứng dụng đang chạy trong vùng chứa? – czpona