Olá, criei um novo projeto com dotnet nunit
e recebo este erro quando tento executar meus testes via Unit.ConsoleRunner.3.8.0.
Dotnet SDK versão 2.1.4
Repositório de amostra mostrando erro: https://github.com/VictorioBerra/nunit3-errors
Execute ./build.ps1 para executar o arquivo cake. Depois de fazer isso, ele baixará Unit.ConsoleRunner.3.8.0 do NuGet. Então, depois de executá-lo ou baixar o pacote nuget, você pode pular o negócio de bolos e apenas executá-lo no PowerShell se desejar:
.\tools\NUnit.ConsoleRunner.3.8.0\tools\nunit3-console.exe .\tests\Demo.Tests\bin\Release\netcoreapp2.0\Demo.Tests.dll
Isso ocorre porque, ao contrário dos projetos do .NET Framework, os projetos do .NET Core não têm suas dependências, como nunit.framework.dll, copiadas para a pasta bin\{configuration}\{tfm}
na construção. Você precisa executar dotnet publish
. Para Bolo, isso é DotNetCorePublish
ou veja o que o NUnit faz . Em seguida, você executar testes em assembléias em bin\{configuration}\{tfm}\publish
que contém dependências.
dotnet test
faz toda esta publicação para você antes de passar o caminho \publish
para dotnet vstest
.
Tanto dotnet vstest
quanto NUnit Console operam em assemblies, não em projetos e, portanto, exigem que você publique primeiro, exatamente como faria se estivesse escrevendo testes autoexecutáveis.
Ahhhhhh isso é realmente esclarecedor e útil, muito obrigado. Se você olhar o exemplo acima do bolo, eles mostram claramente como navegar até o diretório bin para executar os testes: https://cakebuild.net/api/Cake.Common.Tools.NUnit/NUnit3Aliases/5A473496
Esperançosamente, qualquer outra pessoa que se deparar com isso verá isso e economizará algum tempo.
Antes de ir muito rápido: o NUnit.ConsoleRunner ainda não funciona no .NET Core. NUnitLite sim, embora seja a maneira mais fácil de executar testes NUnit: https://github.com/nunit/docs/wiki/.NET-Core-and-.NET-Standard
Exemplo: https://github.com/jnm2/ApiContractGenerator/blob/aa3c085fdb9c978b252b630187325d6eeb504235/build.cake#L21 -L25
@ jnm2 seu exemplo produz resultados de teste? Do wiki que você postou:
O teste dotnet não suporta atualmente a passagem de opções de linha de comando para o adaptador de teste, portanto, o NUnit ainda não pode produzir TestResults.xml.
Este era o estado de coisas da última vez que olhei:
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);
}
}
Eu concordo, aliás, que é uma pena que ainda não tenhamos um NUnit.Console totalmente funcional no .NET Core 2.0. Assim que terminar meus RPs atuais, vou para lá se ninguém me vencer.
Olá, alguma atualização sobre isso?
https://github.com/nunit/nunit-console/issues/475 é o tópico a seguir.
@orihomie Este é um problema encerrado. Você pretende perguntar sobre um diferente?
@CharliePoole Não, acabei de encontrar esse problema em meu plano de compilação ao tentar iniciar os testes .netcore por * \ NUnit.Console-3.6.1 \ nunit3-console.exe e recebi uma exceção que me levou até aqui
@orihomie Você ainda não pode usar o console para .NET Core, mas pode usar 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 Para acompanhar o problema de execução de testes .Net Core por meio do console, fique de olho em nunit / nunit-console # 478
Comentários muito úteis
Eu concordo, aliás, que é uma pena que ainda não tenhamos um NUnit.Console totalmente funcional no .NET Core 2.0. Assim que terminar meus RPs atuais, vou para lá se ninguém me vencer.