Перейти к содержимому

Фотография

Не перехватывается исключение


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 ilyar_epm

ilyar_epm

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Турдушев Ильяр Абдулмажитович

Отправлено 23 сентября 2010 - 08:57

Здравствуйте.
Помогите, пожалуйста, разобраться с возникшей проблемой.

Для автоматизации тестов используется 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 ничего не написано.

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

Вопрос

Почему не удается перехватить и обработать исключение, если оно было сгенерировано в функции, которая находится в другом скриптовом файле? Может я что-то не так делаю? Или не правильно заданы настройки тестового проекта?

Заранее спасибо.
  • 0

#2 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 24 сентября 2010 - 06:55

Здравствуйте.
Исключения, брошенные в другом юните, стали обрабатываться только в TestComplete 8. До этой версии, увы, это было невозможно.
  • 0
С уважением,
Дмитрий

#3 ilyar_epm

ilyar_epm

    Новый участник

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Турдушев Ильяр Абдулмажитович

Отправлено 27 сентября 2010 - 08:18

Dmitry N
Спасибо за ответ. Вероятно, со скриптовыми расширениями (ScriptExtension) дело обстоит также. Т.е. если исключение брошено из скриптового расширения, то его можно будет обработать только в версии TestComplete 8.0.
  • 0

#4 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 27 сентября 2010 - 11:04

Здравствуйте.

А вот про Script Extensions не знаю. Надо пробовать,
  • 0
С уважением,
Дмитрий


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных