Можно ли автоматизировать `EXEC tSQLt.RunAll` в агенте SQL?

Я следовал примерам из tSQLt и успешно создал модульные и интеграционные тесты для своих База данных SQL Server. Я знаю, что Redgate продает инструменты DevOps для автоматизации модульных и интеграционных тестов tSQLt, но у меня нет таких денег.

Моя бесплатная идея состояла в том, чтобы запускать задачу агента SQL по расписанию. Создать шаг задания T-SQL достаточно просто с помощью команды EXEC tSQLt.RunAll;. Хотя у меня есть агент SQL, настроенный на отправку мне электронных писем в случае сбоя шага задания, я не знаю, как агент узнает, были ли у меня какие-либо неудачные тесты при выполнении шага EXEC tSQLt.RunAll;, и предупредит меня.

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

Кто-нибудь смог сделать это или добиться аналогичного результата с помощью агента SQL?


person RandomHandle    schedule 19.01.2018    source источник
comment
Если тесты не пройдены, это вызовет ошибку, поэтому задание завершится ошибкой, и вы сможете использовать обычное оповещение об ошибках агента SQL. Но как вы развертываете изменения? Можете ли вы интегрировать это в это?   -  person Martin Smith    schedule 19.01.2018
comment
@MartinSmith - агент SQL работает так, как вы описали. В моем случае это действует как система раннего предупреждения, когда пользователи предоставляют неверные данные. Это побуждает меня создавать больше юнит-тестов и сценариев перенаправления к таблице ошибок.   -  person RandomHandle    schedule 19.01.2018
comment
Вы ведь не используете tSQLt в продакшене, @RandomHandle? Меня немного беспокоит, когда пользователи предоставляют неверные данные. tSQLt хорошо изолирует тестируемый объект от остальной части базы данных. Но это также означает, что tSQLt под прикрытием делает вещи, которые могут вызвать проблемы в производственной системе.   -  person Sebastian Meine    schedule 19.01.2018
comment
Это не традиционная производственная система. Это интранет-сайт, которым пользуются несколько нетехнических людей. Это также база данных, которая никогда не дорабатывается, потому что пользователи хотят продолжать ее развивать. Я знаю, что нарушаю одно из правил, но я должен что-то сделать. Возможно, интеграционный тест — неподходящий термин: я проверяю реальные записи данных во время запланированных обновлений, которые могут привести к сбою одного или нескольких тестов и сигнализировать мне о необходимости настройки системы. (Обучение пользователей не всегда возможно.)   -  person RandomHandle    schedule 19.01.2018
comment
Значит, на этом сервере разработка происходит непроверенной? Если это так, и вы не возражаете против риска того, что что-то пойдет не так, то достаточно будет использовать работу агента. Но кажется, что это слишком поздно, чтобы найти проблемы.   -  person David Atkinson    schedule 20.01.2018
comment
@DavidAtkinson - это разработка, ориентированная на отладку. Некрасиво, но только недавно я услышал о tsqlt, и поздно вписать тестирование в картину лучше, чем никогда.   -  person RandomHandle    schedule 20.01.2018


Ответы (1)


Как указывает Мартин Смит, tSQLt выдает ошибку в конце выполнения, если какой-либо из тестов завершился неудачей или столкнулся с исключением. Любые ошибки обнаруживаются, поэтому вы всегда получите полный запуск.

Агент позволяет вам захватить выходные данные, чтобы вы могли увидеть, что не удалось.

person Sebastian Meine    schedule 19.01.2018