Javenue logo

Javenue

Программирование на Java

Информационные технологии

Тестирование и внутренние классы (inner class)

[Статья устарела и вскоре будет исправлена.]

При тестировании отдельных классов Java-приложения, многие используют метод main или создают дополнительный тестовый класс. Отдельный класс лучше использовать при интеграционных тестах, а метод main после выпуска новой версии класса/пакета чаще всего нужно удалять.

В этой статье я вновь возвращаюсь к внутренним классам (inner class) для решения описанной выше проблемы. На этот раз мы рассмотрим статические внутренние классы.

Статический внутренний класс описывается с модификатором static внутри декларации другого (обрамляющего) класса. Вот пример такого класса:

public class OuterClass {
    // ....
    public static class TestInnerClass {
        public static void main (String[] args) {
            // ....
        }
    }
}

Итак, чем нам помогает данное описание при тестировании.

Во-первых, внутренний класс компилируется в отдельный class-файл. В приведенном примере после компиляции мы получим 2 класса: OuterClass.class и OuterClass$TestInnerClass.class. То есть, после окончания тестирования второй class-файл можно просто удалить. Преимущества очевидны, тесты и функционал находятся в одном source-файле.

Во-вторых, класс TestInnerClass имеет доступ ко всем private и protected методам обрамляющего класса. Иными словами, мы обходим инкапсуляцию для более полного тестирования. Пользуйтесь этой возможностью осторожно.

Если вы знакомы с JUnit-тестированием, вам ничего не мешает писать тест-кейсы прямо во внутреннем классе.

Еще про внутренние классы в Java можно прочитать здесь - Внтуренние классы в Java.

Жду ваших вопросов и комментариев.


Комментариев: 0

  Выйти

  * для публикации комментариев нужно