Комментарии 24
Лично я им пользуюсь около десятка лет, советую посмотреть.
Это совсем не то.
У меня каждый юнит-тест является совершенно независимой единицей и не создает обьектов в базе, потому что не заворачивается в процедуры.
Не используется и VS мне иногда надо запускать тесты на удаленной машине, где доступен только sqlcmd.
Я хочу дать (или запустить) код теста любому разработчику и он будет полноценным, без всяких зависимостей.
SSDT — прекраснейшая по задумке штука (отделить разработку кода от живой БД — это супер, иметь нормальные code references и рефакторинг — почти бесценно). И для небольших решений подходит, наверное. Но для сколько-то крупных решений это сплошная мука. Вот кратко только то обо что совсем больно спотыкаться.
- Разработка решений из нескольких БД/серверов.
- Разработка нескольких БД у которых существенная общая часть кода.
- Разработка БД больше 1000 объектов (сколько будет собираться решение?).
- Разработка БД для нескольких разных версий СУБД.
- Разработка с объектами уровня сервера.
- Мелочь, а всё-таки, сборка проектов с enterprise фичами.
Модульные тесты SSDT это просто соседнее решение почти обычных UT, которое можно прикрутить к сборке SSDT. Не то чтобы это совсем плохо, но получается достаточно узкая применимость. Навскидку:
- Это C# решение, а значит надо, чтобы разработчик базово умел C#.
- Сборка под виндой (что уже ограничение), плюс headless сборка SSDT — это та еще румба с бубном.
- Тесты хранятся в интерактивно меняемых resx. Как с этим жить с git? Я сам-то умру такое сравнивать/мержить, а уж убедить всю команду так делать… Только если действовать как Каа на бандерлогов, но у меня дар убеждения так не прокачан.
- В отличие, например, от tSQLt, у которого кишки нормально спрятаны, у модульных тестов SSDT все кишки разложены в решении. Это лишняя когнитивная нагрузка на разработчика, задача которого "просто написать юнит-тест" прямо сейчас.
Но, повторюсь, если у вас всего объектов <500 и есть еще логика на C#, если всё лежит в одной БД, у которой нет ни вызовов master/msdb, ни вызовов linked server'ов, ни передачи данных из ХП в ХП через временные таблицы, нет требований по автоматизации сборки, то, конечно, попробовать стоит.
«Это C# решение, а значит надо, чтобы разработчик базово умел C#» Полезно, но необязательно, можно все делать в гуях
«Сборка под виндой (что уже ограничение), плюс headless сборка SSDT — это та еще румба с бубном» Тут соглашусь, настройка деплоя еще тот праздник. Но, с другой стороны, за возможность НЕ писать апрейды на каждую версию я все готов простить.
«Тесты хранятся в интерактивно меняемых resx. Как с этим жить с git? Я сам-то умру такое сравнивать/мержить, а уж убедить всю команду так делать… Только если действовать как Каа на бандерлогов, но у меня дар убеждения так не прокачан.» Ну, я живу, хотя с таким способом хранения, да, сравнивать не просто. Но не помню, чтобы приходилось. По поводу Каа — тут согласен полностью, мне тоже команду убедить не удалось. Но тех, кого заставил, довольны.
На предыдущем месте работы проекты в 500 таблиц (и гора SP, UDF и т.п., понятно) собирались минут 10-20, "большой" проект на 2000 таблиц (и 6000 кажется всего объектов) собирался больше часа на 16 ГБ. После перехода на SSD "всего" 30 минут. Плюс там регулярно 32-битная VS начинает утыкаться в лимит памяти. Если несколько таких проектов зависят друг от друга, то это адский мрак. Короче, формировать адский файл модели данных в XML (это он при компиляции и разборе проекта делает) было не самой лучшей архитектурной идеей.
Мне правда SSDT понравился, и, правда, я не тот кто "просто не умеет готовить", но на наших решениях перейти не получилось.
Кстати, в апгрейдах есть еще одна засада. В SSDT очень легко при разруливании merge conflict потерять историю рефакторинга и вместо аккуратной трансформации таблицы получить "оопс".
Причем обидно, что уже лет 5 SSDT в развитии практически замер (ну или мне так кажется). Если MS его похоронит, будет печаль.
Тем не менее, лучшего продукта для MSSQL нет. По совокупности.
Я думал об этом, но идеология ДатаГрипа мне не нравится — он работает с коллективом скриптов, а не проектом. Кроме того, CLR и проч и проч, о чем писал выше. Кроссплатформенность для меня не актуальна. 64бит — да, мечта, но только ради этого я из студии не уйду. А еще BI, SSAS, Workflow…
И вообще, писать на шарпе в среде джавы как-то некузяво :))
Если серьезно, адд-он к студии я бы купил, как и решарпер.
Адд-он к студии мы делать не будем, у нас есть, вероятно, лучшая в мире платформа, которая позволяет нам быстро делать крутые штуки. И мы верим, что крутость этих штук так или иначе должна когда-нибудь зацепить даже самых ярых скептиков.
Недавно мы познакомились с Себастьяном, который делает tSQLt.org, и если будут мысли в этом направлении, может, начнем с него. С автором utplsql мы тоже знакомы, он использует DataGrip.
Но, повторюсь, пока есть более приоритетные задачи. И вы о них знаете :)
чем не угодил sourceforge.net/projects/uttsql?
бегло проглядел документацию — с виду аналогичет utplsql.
из коробки
— действия до/после теста или всего пакета
— html файлик отчета
— запускается просто вызовом соотв. функции. (то есть подходит для запуска из консоли БД)
Юнит тестирование скриптов баз данных