Nunit: Não foi possível carregar o arquivo ou montagem 'nunit.framework'

Criado em 14 fev. 2018  ·  12Comentários  ·  Fonte: nunit/nunit

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

question

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.

Todos 12 comentários

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?

@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

Esta página foi útil?
0 / 5 - 0 avaliações