Тестирование интерфейса CloseableIterator - PullRequest
0 голосов
/ 12 января 2019

Какие могут быть способы проверки следующего интерфейса:

interface CloseableIterator<T> extends Iterator<T>, AutoCloseable {

}

Спасибо.

EDIT

Интересно, будет ли полезен следующий тест:

    @Test
    void anonymousImplementation() {
        new CloseableIterator<String>() {
            @Override
            public void close() throws Exception {
                throw new Exception();
            }
            @Override
            public boolean hasNext() {
                return false;
            }
            @Override
            public String next() {
                return null;
            }
        };
    }

Тогда, если по какой-либо причине AutoCloseable будет удален из CloseableIterator, или универсальный тип изменится, скажем, на T extends Number, это даст мне ошибку компиляции. На самом деле не «тест», но гарантирует, что существует хотя бы одна реализация, обеспечивающая правильность методов и допустимость универсального типа.

1 Ответ

0 голосов
/ 13 января 2019

Как написано прямо сейчас, ваш интерфейс не содержит какой-либо код (иначе поведение).

Поэтому проверять нечего.

Другими словами: на данный момент нет причин для написания модульного теста здесь. Написание тестовой реализации интерфейса только для того, чтобы проверить, что интерфейс является интерфейсом, является излишним. Нет такой ошибки, которую вы когда-либо поймаете здесь.

Значение: если ваш интерфейс используется неверно, компилятор сообщит вам.

Помните: вы не пишите модульные тесты, потому что можете. Вы пишете их, потому что они способствуют вашей работе. Как объяснено, по крайней мере для данного интерфейса здесь модульные тесты не дают значимого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...