Ответ 1
UPDATE: XUnit по-прежнему отличная идея, но этот ответ устарел сейчас, потому что вы можете также использовать "стандартный" MSTEST, если хотите с ASP.NET ядро. (1 июня 2016 года) Я считаю, что по-прежнему предпочитаю XUnit, но это ваш звонок.
САМЫЙ ПОСЛЕДНИЙ ИНСТРУКЦИИ XUNIT LINK: Отличные инструкции, которые могут быть обновлены чаще, чем этот ответ, найдены в вики xUnit.
IDE WORKAROUND: вручную найдите и удалите %TEMP%\VisualStudioTestExplorerExtensions
, когда Visual Studio пойдет глупо и не будет "обнаруживать" и показывать ваши тесты.
По состоянию на май 2016 года, когда ASP.NET Core 1.0 RC1 недавно перешел на RC2, по-прежнему не представляется возможным использовать стандартную инфраструктуру Microsoft Unit Test с ASP.NET Core (ранее ASP.NET 5) и XUnit представляется хорошим выбором для RC1 и RC2.
Вы можете получить модульное тестирование XUnit.net для работы с ASP.NET Core 1.0.0-RC1, используя официальные инструкции] 2 в проект XUnit github, который имеет конкретный "запуск ядра .net".
Вы также можете установить Шаблон нового проекта XUnit, который предоставляет шаблонный проект Unit Test для регулярного полного ядра .net и .net. Нажмите "Сервис", а затем "Расширения и обновления" введите в XUnit и найдите xUnit Test Project TEMPLATE и установите TEMPLATE. НЕ УСТАНАВЛИВАЙТЕ ЛЮБОГО ИСПЫТАТЕЛЬНОГО ИСПЫТАНИЯ XUNIT, ВАМ НЕ НУЖНО.
Я создал рабочий образец и загрузил его в битбакет:
https://bitbucket.org/wpostma/aspnet5mvc6xunitdemo
Если у вас нет mercurial, вы можете скачать zip из битбакет.
Демонстрация включает в себя один тест, который проходит, и один тест, который терпит неудачу.
Краткое описание:
-
У вас есть Visual Studio 2015, включая Update2 и инструменты "1.0.0 preview" (последняя по состоянию на май 2016 года).
-
Создайте библиотеку веб-классов НЕ a Unit Test Project.
-
Добавьте ссылки XUnit на него и исправьте ваш project.json(пример ниже).
-
Напишите свой класс (пример ниже).
-
Запустите тесты с помощью Test Explorer внутри ide или вне ide, введите
dnx . tests
и проверьте вывод (пример ниже).
project.json для 1.0.0-rc2 со ссылкой на демонстрационную сборку и xunit:
{
"version": "1.0.0-*",
"testRunner": "xunit",
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-rc2-3002702",
"type": "platform"
},
"dotnet-test-xunit": "1.0.0-rc2-*",
"xunit": "2.1.0",
"YetAnotherWebbyDemo": "1.0.0-*"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"dnxcore50",
"portable-net45+win8"
]
}
}
}
Unit test class (whatever.cs):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Xunit;
using YetAnotherWebbyDemo.Models;
namespace YetAnotherWebbyDemoTests
{
// This project can output the Class library as a NuGet Package.
// To enable this option, right-click on the project and select the Properties menu item. In the Build tab select "Produce outputs on build".
public class TestBasics
{
[Fact]
public void TestAdd()
{
TestableModelClass TestMe = new TestableModelClass();
Assert.True(TestMe.Add(3, 2) == 5, "Basic Math Failure");
Assert.True(TestMe.Add(-3, -2) == -5, "Basic Math Failure");
}
}
}
Пример вывода из командной строки в RC1, когда мы использовали dnx:
C:\dev\Demo\YetAnotherWebbyDemo\src\YetAnotherWebbyDemoTests>dnx . test
xUnit.net DNX Runner (32-bit DNX 4.5.1)
Discovering: YetAnotherWebbyDemoTests
Discovered: YetAnotherWebbyDemoTests
Starting: YetAnotherWebbyDemoTests
YetAnotherWebbyDemoTests.TestBasics.TestAdd [FAIL]
Basic Math Failure
Expected: True
Actual: False
Stack Trace:
YetAnotherWebbyDemoTestBasics.cs(25,0): at YetAnotherWebbyDemoTests.Test
Basics.TestAdd()
Finished: YetAnotherWebbyDemoTests
=== TEST EXECUTION SUMMARY ===
YetAnotherWebbyDemoTests Total: 1, Errors: 0, Failed: 1, Skipped: 0, Time: 0.263s
Пример вывода в RC2, где мы используем dotnet
:
D:\dev\aspnet5mvc6xunitdemo\src\YetAnotherWebbyDemoTests>dotnet test
Project YetAnotherWebbyDemo (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
Project YetAnotherWebbyDemoTests (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
xUnit.net .NET CLI test runner (64-bit win10-x64)
Discovering: YetAnotherWebbyDemoTests
Discovered: YetAnotherWebbyDemoTests
Starting: YetAnotherWebbyDemoTests
YetAnotherWebbyDemoTests.TestBasics.TestAdd [FAIL]
Basic Math Failure
Expected: True
Actual: False
Stack Trace:
D:\dev\aspnet5mvc6xunitdemo\src\YetAnotherWebbyDemoTests\YetAnotherWebbyDemoTestBasics.cs(26,0): at YetAnotherWebbyDemoTests.TestBasics.TestAdd()
Finished: YetAnotherWebbyDemoTests
=== TEST EXECUTION SUMMARY ===
YetAnotherWebbyDemoTests Total: 1, Errors: 0, Failed: 1, Skipped: 0, Time: 0.205s
SUMMARY: Total: 1 targets, Passed: 0, Failed: 1.