29
May

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

Posted in: Тестирование кода, Java technologies, J2SE |

При тестировании отдельных классов 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-тестированием, вам ничего не мешает использовать Unit-тесты в методе main внутреннего класса.
Жду ваших вопросов и комментариев.

No Comments yet »

RSS feed for comments on this post. TrackBack URI



Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>