NUnit, TestDriven.Net:Resultados de teste duplicados com classes de teste parciais
-
21-09-2019 - |
Pergunta
Acabei de descobrir que estava fazendo o dobro do número de testes que deveria.Descobri isso quando um teste quebrou e tive duas falhas de teste idênticas.Mesmo teste, mesmo tudo.Fiquei bastante confuso, mas consegui restringi-lo a uma determinada classe de teste que era parcial.
O motivo de ser uma aula parcial foi que eu dividi uma aula de teste em duas, só para torná-la um pouco mais limpa.A classe em teste tinha um determinado método que exigia uma longa série de testes e achei que seria mais limpo tê-los em um arquivo separado.Mas como havia um ou dois métodos auxiliares usados, imaginei que poderia simplesmente tornar a classe parcial para que ambos os arquivos ainda tivessem acesso a esses métodos.
A estrutura de teste é NUnit e os testes foram executados usando TestDriven.Net.Executei os testes dentro de um único método de teste (relatou dois testes aprovados em vez de um), na classe (obteve o dobro do número de testes aprovados) e em todo o projeto de teste.
Consegui corrigir o problema tornando as classes não parciais e apenas duplicando esses pequenos métodos auxiliares (pode movê-los para uma classe auxiliar separada ou algo mais tarde).
Agora...por que diabos isso está acontecendo?Achei que as classes parciais fossem compiladas em uma única classe?Este é um problema com classes parciais em geral, NUnit, Test-Driven.net ou algo completamente diferente?
Solução
Você provavelmente colocou o [TestFixture]
atributo em ambos os arquivos da classe parcial.Isto causará TestFixture
será emitido duas vezes na definição da classe IL e o NUnit executará o mesmo código de teste duas vezes.Você só deve adicionar [TestFixture]
em um dos arquivos da sua aula parcial.