NUnit não está executando o código do Visual Studio 2010

98

Estou tentando carregar uma dll beta do Visual Studio 2010 na interface do usuário do NUnit. Recebo um erro de pop-up.

Este assembly é construído por um runtime mais recente do que o runtime atualmente carregado e não pode ser carregado. Você pode estar tentando carregar uma construção de montagem com uma versão posterior do CLR do que a versão na qual o NUnit está sendo executado atualmente.

Como faço para forçar a execução de um executável no .NET 4?

Bola
fonte
Esta questão está realmente relacionada ao código do VS 2010 ou .NET 4? - Estou procurando uma ferramenta que me permita executar testes NUNIT no Visual Studio 2010 e essa pergunta me enganou.
Nicolas Irisarri
@Nicolas - refere-se ao .NET 4.0.
Daniel A. White

Respostas:

132

Baixei o código-fonte do NUnit 2.5 e abri a solução VS2008 na versão beta do VS2010. Assim que a conversão terminou, abri todos os projetos e alterei a configuração do framework de destino para todos os projetos para ".NET Framework 4.0". Então, construí a solução sem erros. Agora posso usar o aplicativo NUnit GUI para executar testes desenvolvidos para .NET 4.0. Eu não fiz testes exaustivos desta construção, então pode haver problemas, mas para meus propósitos, funciona bem.

Atualização: Não é necessário reconstruir o NUnit. Descobri que, se você adicionar o seguinte ao arquivo de configuração NUnit relevante, poderá executar uma dll de teste construída para .NET 4.0.

Em <configuration> adicione:

<startup>
  <supportedRuntime version="v4.0.30319" />
</startup>

e em <runtime> adicione:

<loadFromRemoteSources enabled="true" />
Charles Cook
fonte
3
Ok, as atualizações de configuração fazem funcionar, mas eu tive que usar version = "v4.0.21006" para minha tag requiredRuntime.
mkmurray
4
BTW, o local padrão do arquivo de configuração é: C: \ Arquivos de programas \ NUnit 2.5.3 \ bin \ net-2.0 \ nunit.exe.config Adicionar essas opções à configuração funcionou para mim.
Brad Irby
2
Não foi possível fazer isso funcionar com o Nunit + .net4 RTM mais recente. Adicionei as entradas sugeridas a nunit-console.exe.config, mas recebo: System.ArgumentException: A estrutura net-4.0 não está disponível Tentei com as versões anteriores + v4.0.30319 Estou executando o 2008 R2 x64
Andreas Öhlund
1
Para o executor do console, altere as configurações conforme mencionado, mas usando v4.0.30319 para a versão RTM do .NET 4.0. Além disso, execute-o com este argumento de linha de comando: /framework=4.0.30319
Lance Fisher de
1
Tive sorte ao usar a opção de linha de comando /framework:net-4.0.30319 em vez de alterar a configuração. Isso foi útil para que eu pudesse controlar quais aplicativos usavam o 4.0 CLR e quais não.
Kevin Crowell
25

Com o .NET 4 sendo lançado, usei

<supportedRuntime version="v4.0.30319" />

no NUnit 2.5.4 exe.config em vez de requiredRuntime e na tag loadFromRemoteResources conforme mostrado acima e tudo funcionou bem. Obrigado!

pelazem
fonte
17

Você não precisa modificar nenhum arquivo

apenas abra este arquivo e tudo funcionará bem

C: \ Arquivos de programas (x86) \ NUnit 2.5.10 \ bin \ net-2.0 \ nunit-x86.exe

escuro
fonte
Obrigado - resolveu meu caso. Tem que usar a versão x86 do nunit para testes de unidade compilados x86. Os avisos de versão CLR foram uma pista falsa. Usando o nunit 2.5.10.
Nigel Touch
Mesmo aqui, de alguma forma tem que usar a versão x86
gavin
12

No NUnit 2.5.5 você pode especificar na linha de comando a opção /framework=net-4.0 e é compatível com os novos assemblies gerados com o lançamento do VS2010 mais recente.

Cristian T
fonte
3
Nunca consegui fazer isso funcionar. Já vi pessoas usarem /framework:net-4.0.30319 e todos os tipos de outras variações. Seria bom se eles incluíssem as opções reais nos documentos do site.
Jason Short
2
@Jason Parece que isso só funciona na versão do console. A versão GUI não tem essa opção.
Roman Starkov
+1 por mencionar que funciona a partir da versão 2.5.5! Eu tinha NUnit jogando ArgumentExceptions e NullReferenceExceptions em uma de minhas máquinas, e descobri que era por causa da versão 2.5.0.
realMarkusSchmidt
2

A solução proposta funcionou muito bem para fazer o NUnit funcionar. Infelizmente, quando cheguei à minha etapa de cobertura de código, o NCover começou a me fornecer:

Processo com perfil encerrado. Conexão do Profiler não estabelecida.

A melhor solução que encontrei para isso foi apenas usar a versão "-x86" do NUnit com NCover:

NCover.Console.exe nunit-console-x86.exe --parâmetros adicionais--

Funciona agora.

Scott Marlowe
fonte
1
Obrigado por isso, eu estava tendo o mesmo problema, sua solução resolveu!
CubanX
2

Para encontrar sua versão .net 4 do Visual [C # 2010 Express, ou qualquer outro], vá para "Sobre" do aplicativo Visual no item Ajuda do menu. Ele deve aparecer como a versão sob a linha Microsoft .NET Framework no lado superior direito da janela.

Dan Paden
fonte
1

Encontrei a mesma mensagem de erro ao executar o NUnit 2.4.8. Como eu não fazia o upgrade há algum tempo, instalei o NUnit atual (v2.5.9) e descobri que agora ele suporta montagens VS2010. Portanto, se você encontrou esse erro recentemente, verifique sua versão do NUnit : a partir de dezembro de 2010 (ou mais), a única coisa que você precisa fazer é atualizar o NUnit.

Michael Sorens
fonte
Estou executando o NUnit 2.5.9 baixado em 15/03/2011 e esse problema não vai embora para mim. Mesmo se eu tentar a solução proposta
DrLazer
1

A partir do NUnit 2.5.10, você pode ativar o suporte do Visual Studio no GUI runner:

Ferramentas-> Configurações-> Suporte IDE

Depois disso, fui capaz de anexar com sucesso ao processo nunit-agent.exe que executa seu assembly em um domínio de aplicativo .NET 4.0

Crackerjack
fonte
0

Se você tiver esse problema após atualizar para o nunit 2.5.5, será necessário atualizar o nant para a versão mais recente para mim, que era 0,91 alfa.

Adão
fonte
0

I encontrados útil para começar a partir de Aplicação NUnit Template . Suporta VS C # Express, permite testes de depuração e contém NUnit pré-compilado para .NET 4.0. Obrigado ao autor, um novo projeto de teste fica pronto com um clique.

Ernest
fonte