2016-10-17 5 views
3

TLDR. Перейти к ответу для получения подробной информации о рабочей настройке xUnit или MSTest. xUnit был наименее болезненным вариантом.Использование MSTest, xUnit или NUnit с ядром dotnet

Мне не удалось заставить NUnit работать на моем сервере сборки, поэтому я прибегал к использованию как xUnit, так и MSTest. Ни для меня не работало.

MSTest Я просто не получаю - я ожидал, что это сработает, но когда я попытаюсь установить dotnet-test-mstest из nuget, я получаю проблемы с зависимостями, так как все его зависимые библиотеки несовместимы для netcoreapp1, например ....

Зависимость MSTest.ObjectModel 1.0.1-preview не поддерживает структуру .NETCoreApp, Version = v1.0.

Зависимость MSTest.TestAdapter.Dotnet 1.0.4-preview не поддерживает фреймворк.

Может кто-нибудь предложить какие-либо советы о том, почему это может произойти?

+0

вам нужно показать ошибку, которую вы получите, и ваш проект json, иначе можно только предполагать. Кроме того, если вы перейдете в NuGet https://www.nuget.org/packages/MSTest.TestAdapter.Dotnet/, вы увидите: «Владелец заблокировал этот пакет. Это может означать, что пакет устарел или должен больше не будет использоваться ». - так что я думаю, это может быть частью вашей проблемы. – Pawel

+0

Я больше не могу предоставить - сообщения об ошибках находятся в моем первоначальном описании. Я просто создаю пустой проект, и это происходит. Ключевой проблемой является то, что она вообще не устанавливается. Мне интересно, если Microsoft не обновила тестовую структуру в соответствии со всем остальным. Информация в Интернете разрежена и очень сложна для изоляции версий. –

+0

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

ответ

6

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

https://docs.microsoft.com/en-us/dotnet/articles/core/testing/using-mstest-on-windows

Кажется, что MSTest Dotnet основные проекты должны быть созданы как консольные приложения для работы ..?

В целях оказания помощи всем остальным, вот проект.json, в котором я оказался.

{ 
    "version": "1.0.0-*", 
    "testRunner": "mstest", 

    "dependencies": { 
     "dotnet-test-mstest": "1.1.1-preview", 
     "MyLibrary": { 
      "target": "project" 
     }, 
     "Microsoft.NETCore.App": { 
      "type": "platform", 
      "version": "1.0.1" 
     }, 
     "MSTest.TestFramework": "1.0.4-preview", 
     "NSubstitute": "2.0.0-rc" 
    }, 

    "frameworks": { 
     "netcoreapp1.0": { 
      "imports": "dnxcore50" 
     } 
    } 
} 

Кажется, что я делаю 2 ключевых вещи по-другому. Для начала моего ключа зависимости была ранее ...

"NETStandard.Library": "1.6.0" 

в то время как в новом project.json это

"Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.1" 
    } 

(в оригинале project.json это было помещено в разделе рамок файл как субзависимость).

другой находится в разделе импорта под «newtcoreapp1.0». В исходном проекте.json я использовал это, включив сам, тогда как рабочий импортирует dnxcore50 (хотя я все еще не убежден, что это действительно так).

Похоже, что есть ошибка с 1.0.5-превью MSTest.TestFramework - я в конечном итоге изменил версию для более ранней версии. С 1.0.5 тесты будут загружаться, но каждый один потерпит неудачу с ошибкой ...

Не удалось загрузить тип «LogMessageHandler» из сборки «Microsoft.VisualStudio.TestPlatform.TestFramework

Я оглянулся куда-то отправьте это как ошибку, но пока не повезло. Если кто-то найдет это с теми же проблемами и знает, где его заносить, пожалуйста, дайте мне знать, и я '+1' это.

Для полноты, вот файл project.json, который работает для NUnit (хотя это NUnit 3 и чтение его выходных файлов является (на момент написания) вопрос об VSTS ...

{ 
    "dependencies": { 
     "MyLibrary": { 
      "target": "project" 
     }, 
     "NETStandard.Library": "1.6.0", 
     "NUnit": "3.5.0", 
     "dotnet-test-nunit": "3.4.0-beta-1" 
    }, 
    "frameworks": { 
     "netcoreapp1.0": { 
      "imports": [ 
       "netcoreapp1.0", 
       "portable-net45+win8" 
      ], 
      "dependencies": { 
       "Microsoft.NETCore.App": { 
        "version": "1.0.1-*", 
        "type": "platform" 
       }, 
       "NSubstitute": "2.0.0-rc" 
      } 
     } 
    }, 
    "testRunner": "nunit", 
    "version": "1.0.0-*" 
} 

И вот xUnit - я буду играть с этим немного больше, поскольку он кажется более жизнеспособным на VSTS ...

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
     "debugType": "portable" 
    }, 
    "dependencies": { 
     "System.Runtime.Serialization.Primitives": "4.1.1", 
     "xunit": "2.1.0", 
     "dotnet-test-xunit": "1.0.0-rc2-build10015", 
     "NSubstitute": "2.0.0-rc", 
     "MyLibrary": { 
      "target": "project" 
     } 

    }, 
    "testRunner": "xunit", 
    "frameworks": { 
     "netcoreapp1.0": { 
      "dependencies": { 
       "Microsoft.NETCore.App": { 
        "type": "platform", 
        "version": "1.0.1" 
       } 
      }, 
      "imports": [ 
       "dotnet5.4", 
       "portable-net451+win8" 
      ] 
     } 
    } 
} 

Более действительно полезная информация XUnit здесь - https://docs.microsoft.com/en-us/dotnet/articles/core/testing/unit-testing-with-dotnet-test

В целом, я нашел, как только принимая получать VSTS работы, а также во внимание, что XUnit был далеко и выше самый простой вариант использования - вы просто должны установить чтобы выполнить задачи сервера сборки, чтобы использовать командную строку testnet test, а затем использовать задачу публикации тестовых файлов, чтобы показать результаты. После сильной боли я все равно не смог пройти пробный прогон MS на сервер сборки.

+2

Вы абсолютно правы в 1.0.5-превью MSTest.TestFramework. Я изменил его на 1.0.4, как вы сказали, и все работает отлично. Я не понимаю, почему нет правильной документации о .Net Core? Некоторые примеры и коды на их сайтах вообще не работают в другой области. В этом учебнике сказано, что нам нужно использовать «Библиотеку», а не «Консольное приложение». – TTCG

+1

Я настоятельно рекомендую использовать xUnit, если это вариант, было гораздо менее болезненно, чем пытаться получить MStest.Framework, работающий в конце. Это имеет дополнительное преимущество - быть кросс-платформой. –

+0

Спасибо Keith. Я узнаю его сегодня вечером. – TTCG

2

Проблема с dotnet-test-mstest 1.1.1-preview и MSTest.TestFramework 1.0.5-предварительный просмотр, который воспитывался @TTCG, поэтому был исправлен с более поздней версией. Не стесняйтесь попробовать это на dotnet-test-mstest 1.1.2-preview и MSTest.TestFramework 1.0.6-preview.

+0

обновление dotnet-test-mstest до версии 1.1.2-preview устранило проблему. благодаря! –

Смежные вопросы