Применение StringTokenizer для лексического анализа строк в Java.

Лексический анализ (токенизация) строки заключается в разборе входной последовательности символов на распознанные группы (лексемы),  с целью получения на выходе идентифицированных последовательностей (токенов).

Класс StringTokenizer, входящий в пакет java.util, обеспечивает возможность разбиения строки на отдельные лексемы, используя определенный набор разделителей. Читать далее Применение StringTokenizer для лексического анализа строк в Java.

Скриншот узла или сцены в JavaFX (scene or node snapshot)

JavaFX logo

Начиная с версии 2.2 в JavaFX появился инструмент, обеспечивающий удобный способ производства снимка экрана. Более того, «снимаемый» объект не обязательно должен быть отображен на экране, что позволяет использовать этот инструмент для компоновки отчетов с различными рисунками, графиками, таблицами и текстовыми областями с дальнейшим сохранением в виде рисунка. Читать далее Скриншот узла или сцены в JavaFX (scene or node snapshot)

Перечисления в Java (Java Enum)

Перечисления (Enum) были введены в Java начиная с версии 1.5 с целью улучшения контроля за типобезопасностью (невозможно назначить переменной значение извне заданного множества допустимых значений). До этого для реализации перечислений предлагалось использовать классы со статическими константами.

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

public class EnumExample_01 {
	enum Cardsuit { CLUBS, DIAMONDS, SPADES, HEARTS }
	
	public static void main(String[] args) {
		Cardsuit cs = Cardsuit.HEARTS;
		if(cs == Cardsuit.HEARTS)
			System.out.println("Черви");
	}
}

В результате на консоль будет выведено Черви . Стоит отметить, что перечисления не нужно сравнивать через equals, достаточно сравнения по ссылке.

Одной из наиболее ценной возможностью применения перечислений в Java является использование его внутри оператора switch: Читать далее Перечисления в Java (Java Enum)

Настройка строковых элементов в формате даты (Java)

Как настроить вывод названия месяца в родительном или именительном падеже?
Как настроить вывод короткого имени дня недели в верхнем регистре?
И другие вопросы настройки форматирования символов формата даты.

На первый вопрос ответ прост. Для именительного падежа названия месяца использовать в SimpleDateFormat шаблон «LLLL», а для родительного — «MMMM». (например «Декабрь» и «декабря» соответственно).

В общем случае, если не нравятся символы, используемые в DateFormat или SimpleDateFormat для представления названия месяца, дня недели, временной зоны и др., то их можно заменить на свои. Для этого нужно использовать DateFormatSymbols, который используется для их инкапсуляции непосредственно в DateFormat и SimpleDateFormat. Читать далее Настройка строковых элементов в формате даты (Java)

Форматирование даты в Java с помощью SimpleDateFormat

Для форматирования ввода и вывода даты в Java до введения нового Date Time API (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html), который был введен в Java 8, использовался класс SimpleDateFormat.

SimpleDateFormat является подклассом DateFormat, который позволяет форматировать ввод-вывод  даты и времени в рамках предопределенных стилей.  В отличие от DateFormat, SimpleDateFormat позволяет создавать собственные настраиваемые форматы ввода-вывода. Читать далее Форматирование даты в Java с помощью SimpleDateFormat

Отключение логирования в готовом приложении

Обычно в debug-версии приложения вываливается в LogCat куча полезной для разработчика информации, которую желательно скрывать в релизе. Да и зачем загаживать LogCat отладочной информацией? Однако ручное удаление (или комментирование) методов вызова журналирования превращается в утомительную процедуру. Поэтому стоит обеспечить возможность автоматического отключения вывода лишней информации в LogCat для release-версии приложения.

Помимо ручного выпиливания есть ряд простых способов обеспечивающих отключение излишнего логирования.

Читать далее Отключение логирования в готовом приложении

Запись и просмотр логов при помощи Logcat

Окно Logcat в Android Studio отображает логи в режиме реального времени и сохраняет историю, чтобы можно было просматривать старые сообщения. Стоит отметить, что по умолчанию LogCat показывает журнал, связанный с последним запущенным приложением.

Для открытия окна LogCat необходимо открыть меню Window -> Show View -> Other и во вкладке android выбрать LogCat.

Читать далее Запись и просмотр логов при помощи Logcat

Управление порядком выполнения JUnit тестов. Аннотация @FixMethodOrder.

Логотип JUnit
Порядок выполнения JUnit тестов не гарантируется и даже может меняться от запуска к запуску. Однако начиная с JUnit 4.11, порядок запуска тестов по умолчанию детерминирован и определяется хэш-кодом имени тестового метода (в порядке возрастания), в случае равенства хэш-кодов, приоритет отдается согласно лексикографическому порядку сортировки имен.

Для обеспечения контроля за порядком выполнения тестов в JUnit предоставлена аннотация для тестового класса – @FixMethodOrder. В зависимости от параметра этой аннотации можно получить три различных варианта поведения:

  • Детерминированный, основанный на hashcode. Это порядок по умолчанию.
  • В порядке возрастания имени метода
  • Порядок обеспечиваемый JVM. Порядок запуска может меняться от запуска к запуску.

Читать далее Управление порядком выполнения JUnit тестов. Аннотация @FixMethodOrder.

Запуск или игнорирование 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