Запуск или игнорирование JUnit-тестов в зависимости от определенных условий

Логотип JUnit

Применение аннотации @Ignore позволяет проигнорировать выполнение помеченного ею теста. Так же этой аннотацией можно пометить весь класс, содержащий тестовые методы, что приведет к игнорированию сразу всех тестов, расположенных в этом классе. Применение аннотации @Ignore главным образом осуществляется в процессе разработки и отладки тестовых или тестируемых классов, для пометки тестов которые не должны выполняться. Параметром аннотации можно указать причину пропуска теста. Пример:

@Ignore(“Тест ещё не реализован!!!”)
@Test
public void testFunct() {
    // ???
}

Однако часто возникает ситуация когда необходимо принять решение выполнять или нет ряд тестов в зависимости от определенных условий, например, в зависимости от числа ядер процессора или операционной системы, под которой выполняются тесты. В таком случае необходимо использовать  «предположения» (assumption), определенные в класс org.junit.Assume. Читать далее Запуск или игнорирование JUnit-тестов в зависимости от определенных условий

Основы JUnit

Логотип JUnit

JUnit – фреймворк для модульного тестирования Java программ, принадлежащий семейству фреймворков xUnit для различных языков программирования (например: CPPUnitC++, JSUnitJavaScript, NUnitC#, PHPUnitPHP). Основная идея модульного тестирования заключается в проверке корректности работы отдельных модулей исходного кода программы, в условиях изолированности тестируемого модуля от других. JUnit играет важнейшую роль в технике разработки через тестирование (test-driven development – TDD), которая заключается в повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, и только затем пишется код, который позволит пройти этот тест.

Будет рассматриваться API версии 4 и выше, которая значительно отличается от версии 3.8. В обзоре раскрываются основы написания простейших JUnit тестов, приводится типовой набор утверждений (assert-ов) и правила определения фикстур (fixtures). Умышлено  не приводятся описание работы с  runner-ом, параметризованного тесстирования, ruler`s, различных подходов к работе с исключениями и другие возможности (так сказать вариант для чайников). Читать далее Основы JUnit

Расширенная форма Бэкуса — Наура (РБНФ)

Краткий обзор, позволяющий разобраться в вопросах: Что такое нотация Бэкуса — Наура? Чем отличается нормальная форма от расширенной? Каковы правила канонической семантики расширенной формы Бэкуса — Наура? Какие дополнительные элементы могут встречаться в различных модификациях РБНФ?

Расширенная форма Бэкуса — Наура или РБНФ (англ. EBNF – Extended Backus–Naur Form) представляет собой доработку нормальной нотации Бэкуса – Наура (БНФ) путем улучшения  синтаксиса, позволившего упростить и сократить в объеме используемые конструкции, сохраняя при этом лаконичность и простоту грамматики. Наиболее важное преимущество РБНФ перед БНФ заключается в возможности описывать повторяющиеся конструкции без применения рекурсии.

Из множества различных вариаций РБНФ каноничным принято считать вариант принятый международной организацией по стандартизации: ISO/IEC 14977.

Читать далее Расширенная форма Бэкуса — Наура (РБНФ)

В чем разница между String, StringBuffer и StringBuilder?

Строки в Java реализованы в виде объектов класса String. Они финализированы и неизменяемы, вследствие этого при любых манипуляциях с ними всегда создается новая строка, что делает работу со строками весьма ресурсоёмким процессом. Если строки необходимо часто менять, то для этого есть StringBuffer и StringBuilder.

Естественным образом возникают вопросы:

  • В чем разница между StringBuffer и StringBuilder?
  • Что между ними общего?
  • Когда лучше использовать StringBuffer , а когда StringBuilder?

Читать далее В чем разница между String, StringBuffer и StringBuilder?

Java String. Почему строки в Java неизменные и финализированные?

Строки в Java не являются примитивным типом данных, как например int или double. Первым делом String – это класс, прописанный в пакете java.lang и представляющий строковый набор символов. String — наиболее широко используемый класс в Java. Трудно себе представить приложение, не используемое строки.

Особенности класса String  в Java заключаются в том, что строки это неизменяемый (immutable) и финализированный тип данных, и возможности хранения всех объектов класса String в пуле строк. Так же к особенностям можно отнести возможность получения объектов класса String используя двойные кавычки и перегруженный оператор “+” для сцепления(конкатенации) строк.

Так почему же строки в Java неизменяемые? При ответе на этот вопрос также становится понятно, являются ли строки в Java потокобезопасными, и почему строка является популярным ключем в HashMap?

Читать далее Java String. Почему строки в Java неизменные и финализированные?

Плагин для вставки математических формул и графиков

Для написания красивых формул, удобно использовать плагин WP QuickLaTeX, благодаря которому можно получить формулы подобного вида:

 \int_1^{\infty}\frac{sinx}{x^2}\,\mathrm{d}x

Читать далее Плагин для вставки математических формул и графиков

Простая форма Бэкуса — Наура (БНФ)

Краткий обзор, отвечающий на вопросы: Что это? Где используется? Правила написания и примеры использования.

 

Backus–Naur form или Backus normal form (BNF) это формальная система описания синтаксиса, в которой одни синтаксические категории последовательно определяются через другие категории. БНФ используется для описания контекстно-свободных формальных грамматик, обычно используется для описания синтаксиса языков программирования, форматов документов, наборов инструкций и протоколов связи. Применяются везде, где необходимо точное описание синтаксиса: например, в официальных спецификациях, руководствах и учебниках.

Так же существует ещё и расширенная форма Бэкуса — Наура, отличающаяся более ёмкими конструкциями.

Читать далее Простая форма Бэкуса — Наура (БНФ)

Конструкторы в Java. Правила и особенности.

Как известно, объект является экземпляром определенного класса. Для его создания используется ключевое слово new, например:
Person student = new Person(“Mike”)
Этим кодом создается новый объект Person и указывается его имя – Mike. Строка «Mike» передается аргументом соответствующему конструктору Person:

Person(String name) {
    this.name = name;
}

Этот конструктор позволяет указать имя человека при создании объекта.

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

  • Конструкторы имеют то же имя, что и имя класса.
  • Конструкторы, как и методы, имеют список принимаемых параметров, но не имеют возвращаемый тип (даже void).

Ниже представлен набор из  7 основных правил работы с конструкторами, позволяющие полностью разобраться в их работе.

Читать далее Конструкторы в Java. Правила и особенности.

Java задача из сертификационного теста

Простая задачка с двумя (а может у кого и больше) «заковырками». Была почерпнута из книги по подготовке к сертификационному экзамену Java SE 8 Oracle Certified Associate (OCA).

Необходимо определить, что будет выведено на экран в результате выполнения следующего кода:

class Base {
    protected int i;
    Base() { add(1); }
    void add(int v) { i += v; }
    void print() { System.out.println(i); }
}

class Extension extends Base {
    Extension() { add(2); }
    void add(int v) { i += v*2; }
}

public class Qd073 {
    public static void main(String[] args) {
        bogo(new Extension());
    }
    static void bogo(Base b) {
        b.add(8);
        b.print();
    }
}

 

Предлагаемые варианты ответов: 9, 11, 13, 21, 22.

Читать далее Java задача из сертификационного теста

Отличный плагин для вставки и подсветки кода в WordPress

Перепробовав множество различных плагинов для вставки и подсветки кода в WordPress, прочитав ряд обзоров и сравнений, я пришел к выводу, что наиболее подходящий для этого плагин — Mivhak Syntax Highlighter.

Читать далее Отличный плагин для вставки и подсветки кода в WordPress