Есть ли жизнь без Resharper-а — 2?

    После проверки того, что можно как то делать навигацию в студии и без решарпера, решил исследовать следующий важный для меня сценарий: а именно unit тестирование в студии (с использованием тестового фреймворка nunit).



    Решарпер довольно хорошо поддерживает возможность запуска тестов (реализованных с помощью nunit) прямо из студии. Краткое описание возможностей может быть найдено тут.

    несколько скринов (решарпер):
    запуск (дебагирование) теста:
    image

    просмоторщик тестов:
    image

    окно сессии тестирования
    image

    Еще нужно добавить экран с возможными опциями решарпера (одна параллельность чего стоит!):


    После этого «богатства» я начал исселедовать встроенные (или альтернативные) решения.
    Прежде всего, чисто студия не поддерживает тесты от nunit-а, но дебагировать тесты можно с помощью самого NUnit таким вот извращенным способом:

    где
    «Start external program»: C:\Program Files (x86)\NUnit 2.6.2\bin\nunit.exe
    «Command line arguments:» mock-assembly.dll /fixture:NUnit.Tests.TestAssembly.MockTestFixture
    «Working directory»: D:\My\MyProjects\MySharper\NUnit-2.6.2-src\NUnit-2.6.2\bin\Debug\tests

    И если теперь запустить тестовый проект через команду Debug | Start new instance, то поднимится NUnit с нужным тестовым классом и можно запускать тесты, а точки останова при этом будут работать.


    Понятно, что такой способ очень «медленный». Для того что бы все-таки воспользоваться встроенным возможностями, авторы NUnit реализовали адаптер, который может быть инсталлирован с галереи.

    image

    Но, к сожалению мне так и не удалось запустить тесты с исходных кодов NUnit-а (Visual Studio 2013, Reshaper 8) из-за ошибки:

    ------ Run test started ------
    Could not find test executor with URI 'executor://nunittestexecutor/'.  Make sure that the test executor is installed and supports .net runtime version 4.0.30319.18213.
    ========== Run test finished: 0 run (0:00:43.9573953) ==========
    


    Погуглив, обнаружил два открытых «тикета»:
    bugs.launchpad.net/nunit-vs-adapter/+bug/1203587
    youtrack.jetbrains.com/issue/RSRP-380922

    Возможности встроенного окна «Test Explorer» с лихвой перекрыты решарпером, может быт, за исключеним группировки «Group by | Duration» или «Group by | Traits» (как красиво перевести не знаю, гугл перевел так: «Группе черты»), что позволяет группировать тесты по разным другим свойствам (времени работы, атрибутам самих тестов).
    пример группировки:


    Пробовал запускать тесты в дргих условиях: иногда получалось, но на глаз, гораздо медленнее чем решарпером.
    Также обнаружен статус теста прямо над самим тестом:

    синия иконка означает, что тест еще не был запущен.
    интересно также, что студия почему то не дает запустить тест прямо с код редактора, но дает запустить тест с метода, который вызывается тестом:

    похоже на баг.

    Итого, в принципе, как то, работать в студии с nunit тестами можно (особенно когда починят адаптер). Кроме того (в независимости от решарпера), есть пару интересных вещей, которые расширяют возможности программиста.

    Спасибо,
    Игорь.
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 10
    • 0
      UPD
      1. По видимому NUnit adapter конфликтует с решарпером. Поэтому, что бы запустить тесты через студию, необходимо выключить поддержу тестов в решарпере и перегрузить студию.

      2. Как мне вспомнилось, Visual Studio 10 имела в главном меню команды «Tests in Current Context» и «Debug in Current Context», которые позволяют запускать тесты из текущего контекста (положения курсора). В Visual Studio 2012 (и 2013) почему то эти команды убрали из главного меню, но оставили в локальном. Проверял: работают, но гораздо медленее решарпера.

      VS2010 (фрагмент главного меню)


      VS2013 (фрагмент локального меню)
      • +1
        TestDriven.Net поддерживает всевозможные фреймворки, последняя бета заявляет поддержку 13 студии.
        • 0
          прежде всего я пытаюсь найти встроенные или бесплатные решения, поэтому этот продукт я не проверял.
          что удивительно, его цена сопоставима с ценой лицензии на решарпер, а каких то существенных конкурентных преимуществ я на нашел.
          но если кто-нибудь обозрит этот продукт, было бы интересно понять в чем его фишка.

          • 0
            А встроенный в студию MSTest?
            • 0
              на так я про него писал (смотри Test Explorer + NUnit Adapter)
              • 0
                Имелось ввиду вообще без NUnit, чем не подходит встроенный в студию тестовый Фреймворк? Ну или чем NUnit лучше?
                По моему мнению, NUnit, да и вообще любой сторонний тестовый Фреймворк имел смысл при 10ой студии, там MSTest был доступен в верхних, платных версиях. В 12ой же он доступен в том числе и в экспрессах, на которые решарпер, кстати, не ставится.
                • 0
                  Понял теперь.
                  Разработчиков и тестов слишком много, поэтому любой переход может оказаться довольно дорогим удовольствием. тем более я не вижу конкретной причины этого делать.

                  Несколько лет назад я перевел один тестовый проект под MSTest, и тогда он мне не показался чем то лучше (а кое что было явно хуже), чем NUnit. Через какое то время я вернул его назад в семью.

        • +1
          Можно просто держать открытым nunit UI. Он обнаруживает когда сборка обновилась (ты сбилдил проект), и прогоняет последние запущенные тесты. А для дебага — аттачится к этой утилитке. Просто, по-мужицки :)

          Второй вариант — использовать MsTest, оно неплохо интегрировано со студией.

          Оба варианта использовал, оба нормально работают.

          У нас на контору решарпер куплен, кстати. Просто меня, лично, слишком умные IDE раздражают.
          • +1
            попробовал мужицкий способ: есть в нем что то! только его надо юзать вместе с расширением ReAttach.

            По поводу MsTest: так я же про него и писал (Test Explorer + NUnit Adapter), или это что то другое?
            • 0
              Я имел ввиду использовать просто mstest вместо nunit — оно из коробки, без всяких адаптеров.

              Про reattach не знал, пойду заценю.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое
          Интересные публикации