Я использую JUnit 4, Java 8 и Gradle 1.12. У меня есть файл с по умолчанию json, который мне нужно загрузить. Мой проект имеет src/main/java/
(содержит источник проекта), src/main/resources/
(пусто), src/test/java/
(источник исходного кода) и src/test/resources/
(загружаемый файл данных json). Файл build.gradle
находится в корне.Доступ к ресурсам в модульных тестах
В моем коде у меня есть:
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();
}
}
}
Из того, что я прочитал, что должен дать мне доступ к файлу ресурсов. Тем не менее, я получаю исключение нулевого указателя при попытке использовать URL-адрес, потому что вызов getSystemResource()
возвращает значение null.
Как получить доступ к моим файлам ресурсов?
У вас есть папка/SRC/тест/ресурсы в вашем пути к классам? –
Я сомневаюсь. Однако я не загружаю классы. – kwiqsilver