Помогите, пожалуйста, разобраться с возникшей проблемой.
Для автоматизации тестов используется TestComplete 7.2, тестовые скрипты пишутся на JScript.
Описание проблемы.
В тестовом проекте имеются два файла:
Tests.sj - содержит функции, запускающие тестовые сценарии,
и
TestUtils.sj - содержит вспомогательные функции, необходимые для запуска тестов (подключение к БД, валидация тестовых данных и т.д.).
В файле TestUtils.sj имеются функции, подобные следующей:
function connect(dbName) { // ... if (connectionProblem) { throw new Error("Невозможно подключиться к БД " + dbName); } }
Данная функция вызывается, например, из функции test1, которая находится в файле Tests.sj:
function test1() { try { // ... connect("TestDB"); } catch (error) { // Код обработки исключения. } }
При выполнении функции test1, в случае неудачного подключения к БД, ожидается, что будет сгенерировано исключение, которое затем можно будет обработать. Однако, вместо этого выполнение теста прекращается. В логе TestComplete-а отображаются 2 записи:
- Error. При этом в Remarks написано: Ошибка выполнения Microsoft JScript. Исключение брошено и не поймано.
- Script execution was interrupted. В Remarks ничего не написано.
Заметил, что поведение, описанное выше, воспроизводится если функция, генерирующая исключение, и функция, вызывающая ее, находятся в разных скриптовых файлах. Если же функции находятся в одном файле, то исключение перехватывается, после чего может быть обработано.
Вопрос
Почему не удается перехватить и обработать исключение, если оно было сгенерировано в функции, которая находится в другом скриптовом файле? Может я что-то не так делаю? Или не правильно заданы настройки тестового проекта?
Заранее спасибо.