Здравствуйте, я создал новый проект с dotnet nunit
и я получаю эту ошибку, когда пытаюсь выполнить свои тесты через Unit.ConsoleRunner.3.8.0.
Dotnet SDK версии 2.1.4
Образец репозитория с ошибкой: https://github.com/VictorioBerra/nunit3-errors
Запустите ./build.ps1, чтобы запустить файл торта. Как только вы это сделаете, он загрузит Unit.ConsoleRunner.3.8.0 из NuGet. Поэтому после того, как вы запустите это или загрузите пакет nuget, вы можете пропустить бизнес с тортом и просто запустить его в PowerShell, если хотите:
.\tools\NUnit.ConsoleRunner.3.8.0\tools\nunit3-console.exe .\tests\Demo.Tests\bin\Release\netcoreapp2.0\Demo.Tests.dll
Это связано с тем, что, в отличие от проектов .NET Framework, в проектах .NET Core не копируются зависимости, такие как nunit.framework.dll, в папку bin\{configuration}\{tfm}
при сборке. Вам нужно запустить dotnet publish
. Для Cake это DotNetCorePublish
или посмотрите, что делает NUnit . Затем вы запускаете тесты сборок в bin\{configuration}\{tfm}\publish
которые действительно содержат зависимости.
dotnet test
выполняет всю эту публикацию за вас, прежде чем передать путь \publish
к dotnet vstest
.
И dotnet vstest
и консоль NUnit работают со сборками, а не с проектами, и поэтому требуют, чтобы вы сначала опубликовали их, как если бы вы писали самоисполняющиеся тесты.
Аааааааааааааааааааааааааааааааааааааааааааааааааааа в), огромное вам спасибо. Если вы посмотрите на пример на торт, они четко показывают переход в каталог bin для выполнения тестов: https://cakebuild.net/api/Cake.Common.Tools.NUnit/NUnit3Aliases/5A473496
Надеюсь, любой, кто столкнется с этим, увидит это и сэкономит время.
Прежде чем я перейду слишком быстро: NUnit.ConsoleRunner еще не работает в .NET Core. NUnitLite работает, хотя это самый простой способ запустить тесты NUnit: https://github.com/nunit/docs/wiki/.NET-Core-and-.NET-Standard
Пример: https://github.com/jnm2/ApiContractGenerator/blob/aa3c085fdb9c978b252b630187325d6eeb504235/build.cake#L21 -L25
@ jnm2 дает ли ваш пример результаты тестирования? Из вики, которую вы разместили:
dotnet test в настоящее время не поддерживает передачу параметров командной строки в тестовый адаптер, поэтому NUnit пока не может создавать TestResults.xml.
В последний раз я смотрел так:
https://github.com/jnm2/Cake.SqlServer/blob/ed6093e268114ef640851414e64aabec49d284e8/build.cake#L114 -L134
try
{
DotNetCoreTest("src/Tests/Tests.csproj", new DotNetCoreTestSettings
{
Configuration = configuration,
NoBuild = true,
Logger = "trx",
ArgumentCustomization = a => a.AppendSwitchQuoted("--results-directory", tempDirectory)
});
}
finally
{
if (parameters.IsRunningOnAppVeyor)
{
// dotnet test cannot do more than one target framework per TRX file
// AppVeyor seems to ignore all but the first TRX upload– perhaps because the test names are identical
// https://github.com/Microsoft/vstest/issues/880#issuecomment-341912021
foreach (var testResultsFile in GetFiles(tempDirectory + "/**/*.trx"))
AppVeyor.UploadTestResults(testResultsFile, AppVeyorTestResultsType.MSTest);
}
}
Я согласен, кстати, что жаль, что у нас еще нет полнофункциональной NUnit.Console на .NET Core 2.0. Как только я закончу свои текущие PR, я пойду туда, если меня никто не опередит.
Привет, есть новости по этому поводу?
https://github.com/nunit/nunit-console/issues/475 - тема, которой нужно следовать.
@orihomie Это закрытый вопрос. Мы собираемся спросить о другом?
@CharliePoole Нет, я только что столкнулся с этой проблемой в моем плане сборки, когда пытался запустить тесты .netcore с помощью * \ NUnit.Console-3.6.1 \ nunit3-console.exe, и получил исключение, которое привело меня прямо сюда
@orihomie Вы пока не можете использовать консоль для .NET Core, но можете использовать dotnet test
.
https://github.com/nunit/docs/wiki/.NET-Core-and-.NET-Standard
https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-nunit
@orihomie Чтобы
Самый полезный комментарий
Я согласен, кстати, что жаль, что у нас еще нет полнофункциональной NUnit.Console на .NET Core 2.0. Как только я закончу свои текущие PR, я пойду туда, если меня никто не опередит.