Tentando usar moles com NuNit. Obter “toupeiras exige que os testes sejam um processo instrumentado”

StackOverflow https://stackoverflow.com/questions/3815946

  •  26-09-2019
  •  | 
  •  

Pergunta

Estou tentando usar toupeiras com Funit e estou recebendo o seguinte erro "Os toupeiros requerem testes para ser um processo instrumentado". Também estou usando a Nunit Visual no Visual Studio 2008 para fazer isso funcionar. Qualquer ajuda é bem -vinda.

Foi útil?

Solução

Foi o que eu fiz para fazer toupeiras funcionarem com o Nunit:

  1. Pegue o arquivo em C:\Program Files (x86)\Microsoft Moles\Documentation\moles.samples.zip e extraia o Moles pasta de solução.

  2. Construir o NUnit Projeto em Visual Studio (2008) para lançamento.

  3. Copie os arquivos de saída Microsoft.Moles.NUnit.dll e Microsoft.Moles.NUnit.xml a partir de ...\Moles\NUnit\bin\Release\ para C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\. Suspeito que esta etapa de recarregar o Addin Nunit em vez de usar a que vem do Download & Install foi o ponto de solução real.

  4. No seu projeto de teste VS, adicione uma referência ao C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\addins\Microsoft.Moles.NUnit.dll você acabou de copiar.

  5. Na sua aula de teste VS, marque um método de teste com o [Moled] atributo (isso exigirá um using Microsoft.Moles.Framework.NUnit). Como alternativa, envolva sua implementação em um using (MolesContext.Create()) { ... } bloco (isso exigirá um using Microsoft.Moles.Framework).

  6. Na linha de comando, invoce o corredor de teste Nunit através do Moles Runner com o seguinte: "C:\Program Files (x86)\Microsoft Moles\bin\moles.runner.exe" "path\to\your\test\assembly.dll" /r:"C:\Program Files (x86)\NUnit 2.5.9\bin\net-2.0\nunit-console.exe" /x86 /args:"/domain=None"

Eu descobri que o atributo [moled não Trabalhe com [Testcase (...)] e ele o traz de volta ao cenário de erro não instrumentado. Em vez disso using (MolesContext.Create()) O bloco também funciona nesse caso.

Depois de achar que tudo funciona, considere executar o Mole Moles Runner como uma ferramenta externa no Visual Studio. Segue as instruções em Executando toupeiras usando o console Nunit do Visual Studio, atualizando os argumentos como na etapa 6.

Observe que isso estava em uma máquina Windows 7 de 64 bits, com Nunit 2.5.9, Microsoft PEX e Moles (x86) 0.94.51006.1. Considere suas pastas reais para diferentes caminhos, versões, etc.

Outras dicas

Estou usando moles versão 0.94.51023.0.

Tanto quanto eu sei, você precisa adicionar o atributo abaixo ao seu método de teste. Estou usando a estrutura de teste do Visual Studio, não tenho certeza se é o mesmo com o Nunit, et. al.

[HostType("Moles")]

Eu também li que você pode adicionar o [Moled] Atribua ao método de teste, mas isso não estava disponível para mim, e eu não entrei no porquê, assumindo que sua documentação antiga - que parece haver muito com toupeiras.

Atualizar: De acordo com o manual de referência de moles, pág. 26, o Moledattribute no método de teste é o caminho a seguir com o Nunit. Você deve registrar o Microsoft.moles.nunit.dll montagem com curta bin/addins pasta.

Então você adicionaria o [Moled] atributo ao método de teste.

[Test]
[Moled]
public void MyTest() {
  ...
}

Caso contrário, você adicionaria um bloco de uso para envolver o método de teste como abaixo:

[Test]
public void MyTest() {
  using (MolesContext()) {
  ...
  }
}

Além de adicionar o atributo [HostType ("Moles")], você precisa envolver o corredor de teste com o Moles Runner. Por exemplo:

moles.runner.exe MyAssembly.dll /r:nunit-console.exe

O Moles Runner provavelmente está localizado em C: Arquivos de Programas Microsoft Moles Bin. Para uso, execute:

moles.runner.exe help

Superjos tem a resposta mais correta e, usando o addin "Teste contínuo", você pode fazer com que o Visual Studio execute o Moles Runner através do Nunit Console Runner com este arquivo em lote:

@echo off

rem Uses the Microsoft Moles runner and fires off the NUnit console runner so you can use Moles with NUnit.
rem This batch file is intended to be run from the Continuous Testing plugin in Visual Studio.
rem However, it can be used to run nunit tests from anyhere with Moles as long as the first parameter
rem is the assembly to be tested.  All other parameters are passed to NUnit.

set ASSEMBLY=%1
set MOLESPATH="c:\Program Files\Microsoft Moles\bin\moles.runner.exe"
set NUNITPATH="C:\Program Files\NUnit 2.5.10\bin\net-2.0\nunit-console.exe"
shift

if [%ASSEMBLY%]==[] goto HelpScreen
if [%1]==[] goto RunAlone
if [%2]==[] goto RunParams1 
if [%3]==[] goto RunParams2 
if [%4]==[] goto RunParams3 
if [%5]==[] goto RunParams4 
if [%6]==[] goto RunParams5 
if [%7]==[] goto RunParams6 
if [%8]==[] goto RunParams7 
if [%9]==[] goto RunParams8 
goto RunParams9
:HelpScreen
echo "The parameters are the same as NUnit Console runner with the exception that:
echo "   1) Only one assembly is supported and it must come first"
echo "   2) Only 9 extra parameters may be specified"
echo
%NUNITPATH% /?
exit 1
:RunAlone
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY%
goto ExitRunner
:RunParams1
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1
goto ExitRunner
:RunParams2
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2
goto ExitRunner
:RunParams3
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3
goto ExitRunner
:RunParams4
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4
goto ExitRunner
:RunParams5
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5
goto ExitRunner
:RunParams6
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6
goto ExitRunner
:RunParams7
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7
goto ExitRunner
:RunParams8
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7 /args:%8
goto ExitRunner
:RunParams9
%MOLESPATH% /r:%NUNITPATH% %ASSEMBLY% /args:%1 /args:%2 /args:%3 /args:%4 /args:%5 /args:%6 /args:%7 /args:%8 /args:%9
goto ExitRunner
:ExitRunner

Basta atualizar os caminhos para sua versão dos pacotes de software. Isso também pode ser usado para executá -lo de outros programas, se você tiver tempo para atualizá -lo.

Você não pode executar MS Moles com Nunit de dentro do Visual Studio. Você deve usar o MSTEST (Testes de unidade do Visual Studio) para fazer isso ou pode executar seus testes de NuNit com toupeiras da linha de comando. Veja o manual de referencia.

Uma alternativa possível: se atender às suas necessidades, você pode usar o Gallio Plataforma de automação para executar todos os tipos de estruturas de teste (no seu caso Nunit e Mstest) lado a lado ...

HTH! Thomas

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top