Precisa de ajuda movendo nUnit testa em projeto separado
-
22-07-2019 - |
Pergunta
Tudo funciona bem quando a classe testes de unidade é parte do projeto principal (TestAccount).
Cada artigo que eu li sobre o teste de unidade recomenda colocar os testes em um projeto separado, então eu ...
- acrescentou outro projeto (TestAccount.UnitTests) para a solução
- movido a classe testes unitários (AccountTests.vb) para TestAccount.UnitTests
- e acrescentou uma referência no TestAccount.UnitTests para TestAccount (copiar = locais true)
A solução compila sem qualquer aviso. No entanto, nUnit não pode acessar o projeto principal e dá o seguinte erro para cada teste:
System.IO.FileNotFoundException: não foi possível carregar arquivo ou assembly 'TestAccount, versão = 1.0.0.0, Culture = neutral, PublicKeyToken = null' ou uma de suas dependências. O sistema não pode encontrar o arquivo especificado.
O que estou fazendo de errado?
(que estava a ter problemas semelhantes com nunit.framework.dll até que ele adicionado ao GAC)
Visual Studio 2005
NET 2.0
nUnit 2.4.8 (.NET versão 2.0)
[Edit] Eu só tenho este problema ao executar nUnit a partir do Visual Studio (como comando externo). Se eu carregar o console nUnit independentemente, ele funciona bem.
[Edit] Omar: Sim, eu tenho a referência a outro projeto. Aqui é um screenshot do meu Solution Explorer
Eu acho que eu poderia simplesmente ter de executar o console nUnit separadamente (em vez de através de ferramentas externas do VS).
Solução
Eu encontrei um relatório de bug que diz Visual Studio expande de forma incorrecta as macros TargetPath e TargetDir. Eles expandir para o obj \ diretório, não bin \
[Update] O problema / solução é realmente discutido na Suporte Visual Studio seção da documentação. Desde macros o 'target' apontam para obj \, você não pode usá-los out-of-the-box. Acabei usando a seguinte expressão no campo Argumentos:
$(ProjectDir)bin/Debug/$(TargetName)$(TargetExt)
Outras dicas
Isso pode parecer bobagem, mas eu estou indo para ir para o óbvio ter-lhe dado o seu projeto de teste uma referência a outro projeto?
Outras questões que são comuns para este tipo de problema é o uso de classes internas que não podem acessados ??a partir de outro projeto / namespace.
Também tenha certeza que sua saída de montagem corresponde caminho para o que está configurado na sua configuração NUnit. Tenho a mesma configuração, mas eu não tenho a set 'cópia local = true'
É o problema com ele não encontrar o aplicativo em si, ou uma das dependências do aplicativo? Você pode tentar usando FileMon ou do Log Viewer Fusão para ver o que exatamente está falhando. É possível que o problema não está em encontrar o aplicativo em si, mas na localização de outra dependência. Certifique-se de todas as dependências têm Copy Local definido como verdadeiro.
Como exatamente você está começando a GUI NUnit dentro VisualStudio? Se você está definindo o "programa externo Start" sob as propriedades do projeto, dá-lhe a opção de especificar o diretório de trabalho. Você pode precisar mudar isto para o local de construção de sua dll de teste.