Прежде чем пометить это как дубликат, пожалуйста, прочитайте вопрос!
У меня есть тест JUnit, который проверяет метод, который записывает свой результат в file
.Чтобы проверить результат, я хочу прочитать этот файл результатов и проверить его содержимое.
Проблема заключается в том, что когда файл результатов еще не существует до начала теста, метод getResourceAsStream()
возвращает null
.
Мой код для теста выглядит примерно так:
@Inject
private ObjectToTest obj
@Test
public void testMethod() throws Exception {
// Do some setup (inject mocks, set properties of obj, ...)
obj.method(); // <-- Creates result.txt
Mockito.verify(obj).method();
// Thread.sleep(1000); <-- I have tried to use this to wait some time for the result, but it did not work
// This part is null on the first run of the test
// When I run the test the second time, the file does already exist and it returns the right InputStream for the File
InputStream resultInp = this.getClass().getResourceAsStream("/test-out/result.txt");
String resultStr = IOUtils.toString(resultInp, "UTF-8");
assertThat(resultStr).isNotNull();
assertThat(resultStr.split("\n")).hasSize(5);
}
Есть ли какое-либо объяснение, почему это происходит, или оно должно что-то делать с другой частью кода?
Я не нашел ничего относительно этой проблемы в StackOverflow, но если я ошибаюсь, направьте меня к нужному сообщению.