Tôi đang sử dụng JUnit 4, Java 8 và Gradle 1,12. Tôi có một tệp với json mặc định mà tôi cần tải. Dự án của tôi có src/main/java/
(chứa nguồn dự án), src/main/resources/
(trống), src/test/java/
(nguồn kiểm tra đơn vị) và src/test/resources/
(thư mục tệp dữ liệu json để tải). Tệp build.gradle
nằm trong thư mục gốc.Truy cập Tài nguyên trong Bài kiểm tra Đơn vị
Trong mã của tôi, tôi có:
public class UnitTests extends JerseyTest
{
@Test
public void test1() throws IOException
{
String json = UnitTests.readResource("/testData.json");
// Do stuff ...
}
// ...
private static String readResource(String resource) throws IOException
{
// I had these three lines combined, but separated them to find the null.
ClassLoader c = UnitTests.class.getClassLoader();
URL r = c.getSystemResource(resource); // This is returning null. ????
//URL r = c.getResource(resource); // This had the same issue.
String fileName = r.getFile();
try (BufferedReader reader = new BufferedReader(new FileReader(fileName)))
{
StringBuffer fileData = new StringBuffer();
char[] buf = new char[1024];
int readCount = 0;
while ((readCount = reader.read(buf)) != -1)
{
String readData = String.valueOf(buf, 0, readCount);
fileData.append(readData);
}
return fileData.toString();
}
}
}
Từ những gì tôi đọc, mà nên cung cấp cho tôi quyền truy cập vào các tập tin tài nguyên. Tuy nhiên, tôi nhận được một ngoại lệ con trỏ null khi tôi cố gắng sử dụng URL, bởi vì các cuộc gọi getSystemResource()
trả về null.
Làm cách nào để truy cập các tệp tài nguyên của tôi?
Bạn có thư mục/src/kiểm tra/nguồn lực trong classpath của bạn? –
Tôi nghi ngờ điều đó. Tôi không tải lớp học mặc dù. – kwiqsilver