К основному контенту

Модульное тестирование для LotusScript, статья на Хабре и прочее

Ох, давно не брал я в руки шашку! По крайней мере в блоге. Пора немного наверстать упущенное.

Модульное тестирование, DUnit

Несколько раз мне приходила в голову мысль, что было бы не плохо иметь покрытие модульными (unit) тестами систем под IBM Notes/Domino, написанных на LotusScript. Код некоторых становится достаточно сложным, а количество вариантов прохождения неподъемным для прогона после каждого изменения. Т.к. готового инструмента вообще говоря нет, пришлось его создать самому.

Так появился DUnit. Это фреймворк для написания и выполнения unit тестов для кода на языке LotusScript. Сам он тоже написан на нем же. Фреймворк свободный, с открытым кодом. Доступен на GitHub. Там же подробная документация о том, как писать и запускать тесты. Проект был так же размещен на OpenNTF.org

Статья на Хабре

Написание DUnit стало для меня некоторым вызовом. Нет, не в плане кода, а в плане подхода к реализации. Я изначально планировал реализовать как отдельный самостоятельный продукт для свободного размещения. Мне хотелось, чтобы это был не просто выброс кода, а полноценный и, по возможности, удобный инструмент. Хотелось осветить причины его появления, устройство и нюансы разработки.

Где наибольшая аудитория для размещения информации такого рода? Конечно же Хабрахабр! Так появилась моя первая статья на этом ресурсе: Модульное тестирование для приложений на платформе IBM Notes/Domino. Крайне рад, что она была одобрена модераторами и получила право быть размещенной в открытом доступе, а я право на дальнейшие публикации на этом ресурсе.

Ждать одобрения пришлось долго. Я даже несколько пал духом и перестал следить за тем, разместили ли статью или нет. Узнал я совершенно случайно из Facebook:)

Немного о планах...

Параллельно с созданием DUnit работал над еще одним проектом, который должен стать открытым - это движок для написания классических (под клиент) приложений для платформы Notes/Domino. Текущее рабочее название LS Open Domino Framework.

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

LS Open Domino Framework - проект открытый, я посчитал, что он должен быть максимально покрыт модульными тестами. В нем нашел свое применение DUnit. И знаете что? Я крайне доволен проделанной работой. Не могу сказать, что всецело следую принципу TDD и скорее пишу тесты как проверку, что все работает как надо в штатном, граничных и ошибочных случаях. Написание тестов позволило значительно улучшить качество кода и найти некоторые ошибки. Было бы очень обидно, если бы они проникли в релизный код.

Также планирую еще одну статью на хабре. Не буду раскрывать все карты, скажу только, что на этот раз она будет посвящена Java и применению одной интересной библиотеки на практике. Упор всей статьи будет именно практическая сторону применения.

Комментарии

Популярные сообщения из этого блога

Занимательные алгоритмы. Поиск цикла в односвязном списке

И снова про тараканов, которые иногда возникают в голове. Как-то раз, засыпая, я задумался на курьезными задачками из своей сферы деятельности (Lotus Notes), которые можно было бы задать на собеседовании, плавно перешел к воспоминаниям о своих первых собеседования, когда опыта работы еще не было. Опыт самих собеседований у меня не велик а места, где задавались действительно интересные задачи (а не задачки типа: написать сортировку массива любым известным способом) вообще равны одному - это ABBYY. Как минимум одна задачка в списке на знание и понимание классических алгоритмов, описанных в книге Дональда Кнута -  Искусство программирования .

Unit-testing object validation when validator has DI

Summary Unit test object validation when validator(s) has a dependency. For instance, we have some custom field and cross-field validators. Want to test their combination. Additionally some of validators have dependencies, injected through constructor or setters. You're not using property injection, right? Shortcut If you are just searching for an answer, here's the fast way: Declare CustomConstraintValidatorFactory that implements javax.validation.ConstraintValidatorFactory Override getInstance method and on facing your constraint validator class instantiate it Otherwise delegate validator construction to org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorFactoryImpl Build validator factory and provide it your CustomConstraintValidatorFactory Build validator, using that factory... Go to demo project on GitHub for details:  https://github.com/MrArtemAA/blog-demos/blob/master/test-validator-with-injection/src/test/java/ru/artemaa/d

Lotus Notes FAQ. 8/9 Eclipse. Как настроить уведомления о Sametime сообщениях

Н а написание данной "инструкцию" натолкнул мой коллега. Помню, первый раз сам долго искал, как отключить постоянно выпрыгивающие уведомления о новых сообщениях в Sametime. И так, речь идет о клиентах IBM Notes 8+ версии Standart (Eclipse based). Как настроить уведомления о Sametime сообщениях?