#java #unit-testing #interface #junit
#java #модульное тестирование #интерфейс #junit
Вопрос:
Я новичок в модульном тестировании.
Как я должен написать тест JUnit для этого метода?
public static void close(Closeable closeable) {
if (closeable == null) {
return;
}
try {
closeable.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
Комментарии:
1. Издеваясь над закрываемым?
2. И вам даже не нужно использовать причудливую издевательскую библиотеку, такую как Mockito. Вы можете сделать это самостоятельно, создав класс, который реализует
Closeable
и имеетboolean isClosed
поле, для которого вы установили значениеtrue
onclose()
, а затем можете проверить из своего теста.
Ответ №1:
Попробуйте:
@Test
public void nominalClose() {
Closeable closeable = new MyCloseable();
Assert.assertFalse(closeable.isClosed());
MyClass.close(closeable); // call to the method you want to test
Assert.assertTrue(closeable.isClosed());
}
@Test(expected = RuntimeException.class)
public void ioExceptionClose() {
Closeable closeable = new Closeable(){
@Override
public void close() {
throw new IOException("test IO");
}
};
MyClass.close(closeable); // call should send a RuntimeException
}
// TODO: add more tests? Null? not IOException?
private static class MyCloseable implements Closeable {
private boolean closed = false;
@Overrive
public void close() {
closed = true;
}
public boolean isClosed() {
return closed;
}
}
Комментарии:
1. Добавьте случай, когда вы передаете null в MyClass.close(), и это идеально.
2. Да, могут быть добавлены другие тесты, я просто хотел показать основные.
3. Да, вы получили мой 1, потрясающий ответ!