У меня есть проект, полный источник которого вы можете найти на его странице GitHub here на ветке feat/config
. Проблема, с которой я сталкиваюсь, заключается в том, что ClassName.class.getClassLoader().getResourceAsStream()
всегда возвращает null
, а создание File
с полным путем (включая исходный каталог) также возвращает FileNotFoundException
.Travis CI и JUnit с Gradle не могут найти ресурсы для пути к лечению
Этот код должен загружать значения конфигурации по умолчанию из ресурса pathpath и записывать его в File
. Он работает локально, но не работает на Travis CI.
public static void writeDefault(String res, File out) throws IOException {
if (!out.exists()) {
out.getParentFile().mkdirs();
out.createNewFile();
}
OutputStream stream = new FileOutputStream(out);
InputStream in = FileConfig.class.getClassLoader().getResourceAsStream(res);
if (in == null) {
stream.close();
throw new FileNotFoundException(res);
}
IOUtils.copy(in, stream);
stream.close();
}
@Test
public void testFileConfig() throws IOException {
System.out.println("Creating default config file");
File testConfigFile = new File("configs/test.txt");
if (!testConfigFile.exists())
FileConfig.writeDefault("configs/test.txt", testConfigFile);
System.out.println("Loading config file");
Config testConfig = FileConfig.loadConfig(testConfigFile);
System.out.println("Loaded value: " + testConfig.getValue("value-1"));
System.out.println("Deleting config file");
testConfigFile.deleteOnExit();
}
выше тест не пройден со следующей трассировки стека:
jtrial.config.TestConfig > testFileConfig STANDARD_OUT
Creating default config file
jtrial.config.TestConfig > testFileConfig FAILED
java.io.FileNotFoundException: configs/test.txt
at jtrial.config.FileConfig.writeDefault(FileConfig.java:111)
at jtrial.config.TestConfig.testFileConfig(TestConfig.java:24)
.travis.yml
конфигурационный файл:
language: java
jdk:
- oraclejdk8
notifications:
email: false
install:
- chmod +x ./gradlew
- ./gradlew --info assemble
script: ./gradlew --info check
Я сделал глупую ошибку, см. мой ответ –