Как пишутся тесты в Folks?
Делаются слепки БД, какой она была до выполнения определенной функции и какой стала после. Соответственно, стандартный тест включает в себя:
dbStart
— состояние БД перед выполнением функции..*.params.xml
— параметры, которые показывают, какая функция должна выполняться в тесте и как.
Результаты прогона тестов можно посмотреть в
\target\surefire-reports\common-context-service\index.html
— общий результат прогона
При написании автотестов стоит учитывать следующие возможности фреймворка:
Подготовка данных
Название теста
При написании тестов нужно обращать внимание на название промежуточных/агрегирующих директорий (они не должны начинаться с префикса test).
Все, что начинается на test, считается тестом и выполняется как тест. А так как внутри только другие папочки и нет dbEnd, тест считается успешно пройденным! А все тесты внутри такой директории игнорируются.
testSearch\test_01_origin
— плохо, такой тест будет игнорироватьсяsearch\test_s_01_origin
— хорошо
Учитывая особенности запуска тестов, лучше в названии ставить префикс, чтобы потом гонять все test_s
одним махом
Заполнение dbStart
- Каждый лист — это отдельная таблица БД.
- Название листа должно соответствовать названию таблицы из скриптов создания базы. (Перед каждым тестом таблица БД создается с нуля. Если в названии таблички допустить ошибку, тест упадет, так как он не поймет, куда ему записывать данные — не существует такой таблицы)
- В любой таблице обязательно надо заполнить
not null
колонки. - Остальные колонки заполнять необязательно (им будет присвоено значение
null
)
Корневые файлы данных
Тест умеет просматривать в поисках общих файлов вверх до главной директории — это позволяет использовать один skipTests.properties
для всех папочек
Сравнение результатов
Как указать ошибку в качестве ожидаемого результата выполнения теста?
Иногда нам необходимо убедиться, что задача упала с ошибкой, а не закончилась успешно. В таком случае в файл feature.params.xml
добавляем параметр (внутрь основного bean
) в таком виде:
Есть поддержка регэкспов!
<property name="errorMessagePattern" value="File with path 'picture.png' ignored.*"/>
Skip tests
Чтобы "заскипать" тест (игнорировать его при прогоне тестов), необходимо добавить его название в файл skipTests.properties
, например
test_s_99_skipped_test = bug-1
При этом неважно, на каком уровне вложенности находится данный тест, достаточно указать его название.