Сегодня под раздачу попадает чудо рук майкрософтовских – фреймворк для юнит-тестов MSTest.
Когда я его увидел, первое впечатление было “красивая свистелка, но держаться от нее нужно подальше”. Опыт использования этого угребищного куска говна на солюшене из 30 проектов с mixed кодом показал, что первое впечатление не обмануло.
Во-первых (и в главных), его не могли написать люди, которые что-то понимают в юнит тестировании. Его писали какие-то человекоподобные обезъянки в полной изоляции от внешнего мира (интернет им, похоже, тоже отключили). Простейший пример – один из тестов не прошел, сработал ассерт. Что сделает нормальный программист? Кликнет на сообщении о проваленном тесте в надежде сразу прыгнуть на место ассерта в кода. Именно так работает, к примеру, cppunit. Что сделали гении из MS? Правильно, под даблклику вылезает восхитительное по своей долбанутости окно с “подробной информацией об ошибке”, которое, в духе M$, имеет бесконечно отрицательную информационную ценность. До места ассерта, что характерно, приходится добираться вручную, причем, если у вас в тесте ассертов больше одного и Вы не расставили вручную сообщения вроде “ассерт 1″ и “абсолютно невозможный ассерт”, то поиск места ошибки превращается в увлекательную игру-угадайку.
Уже одного это должно быть достаточной причиной не использовать это поделие в своем проекте. Но, если Вы, превозмогая все трудности и лишения, все же используете ЭТО, то знайте, что рано или поздно Вас ждет бетонная стена. Дело в том, что MSTest каким-то образом завязан на IntelliSense, которая, в свою очередь, известна тем, что норовит вызывать забавные спецэффекты на сколько-нибудь большом проекте. По крайней мере, это так в 2005 студии. Так вот, будьте готовы к тому, что после нажантия на кноп “запустить тест” можно будет смело идти на обед – Студия уходит в себя минут на 15-20.
Особой пикантности процессу разработки можно добавить, используя MSTest для тестирования нативного С++ кода. Если студия не зависнет, то ее добъет отладчик mixed mode, который не менее весело вешается в случайных случаях.
Что характерно, в M$ о всех вышеперечисленных проблемах знают. Их признают. И нихуя не делают.
“До места ассерта, что характерно, приходится добираться вручную”
- а разве там не показывается Error Stack Trace в котором можно ткнуть в нужную строчку и попасть в код? Хотя по любому конечно тупость, что нельзя попасть туда сразу из панели TestResults, надо сначала даблкликом описание ошибки открывать подробное.
“По крайней мере, это так в 2005 студии. “, “Что характерно, в M$ о всех вышеперечисленных проблемах знают. Их признают. И нихуя не делают.”
И в 2008 та же фигня? Наверно либо у меня проекты гораздо меньше, либо 2008 виснет уже не так глобально.
У меня ни разу не получилось. Тупость в любом случае.
Про 2008 не в курсе, но слышал звон, что IntelliSense там тот же. На C# проектах это не так заметно, но у нас С++ с шаблонами.
Йэх Виталик, а прикинь – писать под 2008-й для виндовс мобайл…:) Так шта – не жалуйся
Хто жалуется? Нет, я просто записываю