06.07.2023, 15:35 | #1 |
Участник
|
SysTestSuiteTTS - сломан?
Привет.
В рамках 2009 Аксапты, в случае использования SysTestSuiteTTS, как результата выполнения функции createSuite класса-теста наследника от SysTestCase, система некорректно обрабатывает сценарии отклонения от целевого результата. При выполнении тест-функции - "вываливается", откатывая транзакцию до ближайшего try catch. В случае запуска проекта тестирования через ПКМ по заголовку проекта обработки try catch просто нет...отсюда выполнение кода просто прерывается. При запуске через форму SysTestToolbar какой-то там инфолог выходит, можно сказать, что работает. Согласно открытой документации перекрытие createSuite является корректным решением и непонятно, почему данный сценарий запуска тестов содержит такую проблему, кто-то ранее встречал её? Т.е.: Создаем тестовый проект. Создаем какой-то класс-тест, наследник от "SysTestCase" в проекте. X++: class SysTestCaseIssueExampleTest extends SysTestCase { } public void testTrueIfExpectedTrue() { ; this.assertTrue(false); } *Формат вывода результатов может варьироваться исходя из конфигурации модуля, будем считать, что там указан инфолог. Добавляем уровень изоляции в рамках транзакции, необходимый атрибут при работе с БД - перекрываем createSuite: X++: public SysTestSuite createSuite() { ; return new SysTestSuiteTTS(this); } Меняем код функции testTrueIfExpectedTrue: X++: public void testTrueIfExpectedTrue() { ; this.assertTrue(true); } Можно конечно в рамках каждой тестовой функции делать обертку самому (ttsBegin, ttsAbort), но MS же реализовали класс-инструмент перекладывающий ответственность с программиста на ядро тестового модуля... Последний раз редактировалось Товарищ ♂uatr; 06.07.2023 в 16:31. |
|
07.07.2023, 01:02 | #2 |
Участник
|
Проект-исправление во вложении.
Убрал транзакционную обертку в "internalRunExecutable" и всю реализацию завязал на перекрытый метод "addTest", создающий нового наследника от "SysTest" - "SysTestTTS". PS функция "setUpTestCase" в рамках "коробочной" версии, как оказалось, вовсе небезопасная. Исправление которой - шаг назад к исходной проблеме. Последний раз редактировалось Товарищ ♂uatr; 07.07.2023 в 01:11. |
|
|
За это сообщение автора поблагодарили: Logger (3), gl00mie (5). |