На самом деле, вы планируете тестировать саму JVM, чтобы увидеть, возникает ли соответствующее исключение при определенных условиях. Некоторые утверждают, что это больше не модульное тестирование, и вам нужно предположить, что то, что находится на внешней стороне JMV, просто работает и не нуждается в тестировании.
Ваш метод readList()
крайне непроверяем. Вы хотите написать тест на существование файла, но вы создаете объект файла внутри этого метода, а не внедряете его. Вы хотите увидеть, было ли выброшено исключение, но вы ловите его внутри этого метода.
Давайте выведем это наружу:
public void readList(File inputFile) throws FileNotFoundException {
//... do your code logic here ...
}
Затем вы можете использовать JUnit @Rule
с именем ExpectedException
в своем модульном тесте:
@RunWith(MockitoJUnitRunner.class)
public class ReaderTest {
@Rule
public ExpectedException exception = ExpectedException.none(); // has to be public
private YourReader subject = new YourReader();
@Test(expect = FileNotFoundException.class)
public void shouldThrowFNFException() {
// given
File nonExistingFile = new File("blabla.txt");
// when
subject.readList(nonExistingFile);
}
// ... OR ...
@Test
public void shouldThrowFNFExceptionWithProperMessage() {
// given
File nonExistingFile = new File("blabla.txt");
exception.expect(FileNotFoundException.class);
exception.exceptionMessage("your message here");
// when
subject.readList(nonExistingFile);
}
}