Очередная пятиминутка ненависти

Сегодня под раздачу попадает чудо рук майкрософтовских – фреймворк для юнит-тестов MSTest.

Когда я его увидел, первое впечатление было “красивая свистелка, но держаться от нее нужно подальше”. Опыт использования этого угребищного куска говна на солюшене из 30 проектов с mixed  кодом показал, что первое впечатление не обмануло.

Во-первых (и в главных), его не могли написать люди, которые что-то понимают в юнит тестировании. Его писали какие-то человекоподобные обезъянки в полной изоляции от внешнего мира (интернет им, похоже, тоже отключили). Простейший пример – один из тестов не прошел, сработал ассерт. Что сделает нормальный программист? Кликнет на сообщении о проваленном тесте в надежде сразу прыгнуть на место ассерта в кода. Именно так работает, к примеру, cppunit. Что сделали гении из MS? Правильно, под даблклику вылезает восхитительное по своей долбанутости окно с “подробной информацией об ошибке”, которое, в духе M$, имеет бесконечно отрицательную информационную ценность. До места ассерта, что характерно, приходится добираться вручную, причем, если у вас в тесте ассертов больше одного и Вы не расставили вручную сообщения вроде “ассерт 1″ и “абсолютно невозможный ассерт”, то поиск места ошибки превращается в увлекательную игру-угадайку.

Уже одного это должно быть достаточной причиной не использовать это поделие в своем проекте. Но, если Вы, превозмогая все трудности и лишения, все же используете ЭТО, то знайте, что рано или поздно Вас ждет бетонная стена. Дело в том, что MSTest каким-то образом завязан на IntelliSense,  которая, в свою очередь, известна тем, что норовит вызывать забавные спецэффекты на сколько-нибудь большом проекте. По крайней мере, это так в 2005 студии. Так вот, будьте готовы к тому, что после нажантия на кноп “запустить тест” можно будет смело идти на обед – Студия уходит в себя  минут на 15-20.

Особой пикантности процессу разработки можно добавить, используя MSTest для тестирования нативного С++ кода. Если студия не зависнет, то ее добъет отладчик mixed mode, который не менее весело вешается в случайных случаях.

Что характерно, в M$ о всех вышеперечисленных проблемах знают. Их признают. И нихуя не делают.

Leave a comment

4 Comments.

  1. “До места ассерта, что характерно, приходится добираться вручную”
    - а разве там не показывается Error Stack Trace в котором можно ткнуть в нужную строчку и попасть в код? Хотя по любому конечно тупость, что нельзя попасть туда сразу из панели TestResults, надо сначала даблкликом описание ошибки открывать подробное.

    “По крайней мере, это так в 2005 студии. “, “Что характерно, в M$ о всех вышеперечисленных проблемах знают. Их признают. И нихуя не делают.”
    И в 2008 та же фигня? Наверно либо у меня проекты гораздо меньше, либо 2008 виснет уже не так глобально.

  2. а разве там не показывается Error Stack Trace в котором можно ткнуть в нужную строчку и попасть в код?

    У меня ни разу не получилось. Тупость в любом случае.

    Про 2008 не в курсе, но слышал звон, что IntelliSense там тот же. На C# проектах это не так заметно, но у нас С++ с шаблонами.

  3. Йэх Виталик, а прикинь – писать под 2008-й для виндовс мобайл…:) Так шта – не жалуйся :)

  4. Хто жалуется? Нет, я просто записываю :)

Leave a Reply

Yandex Mail.ru Google LiveJournal myOpenId Flickr claimId Blogger Wordpress OpenID Yahoo Technorati Vidoop Verisign AOL


[ Ctrl + Enter ]

Trackbacks and Pingbacks:

  • Moore - Trackback on 2008/08/22/ 15:21
9 visitors online now
9 guests, 0 members
Max visitors today: 11 at 07:38 am MST
This month: 23 at 05-03-2012 08:23 am MST
This year: 29 at 01-23-2012 02:50 am MST
All time: 45 at 02-23-2011 09:11 am MST