Convertendo um aplicativo de teste em casa bebida fermentada a uma estrutura de teste de unidade padrão

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

Pergunta

Eu tenho um monte de provas escritas por um pedaço de software (que é uma coisa GREAT), mas foi construído essencialmente como um teste independente em C #. Enquanto isso funciona bem o suficiente, ele sofre de algumas falhas, não menos do que é que ele não está usando um framework de testes padrão e acaba exigindo a pessoa que executa o teste para comentar chamadas para testes que não devem ser executados (quando não se deseja executar o teste 'suite'). Eu gostaria de incorporá-lo em meu processo de testes automatizados.

Eu vi que o Test Edition of VS 2008 tem a noção de um 'teste genérico' que pode fazer o que quiser, mas não estamos em uma posição para gastar o dinheiro em que a versão atualmente. Eu recentemente começou a utilizar a versão VS 2008 Pro.

Estes métodos de ensaio seguem um padrão familiar:

  • Faça alguma configuração para o teste.
  • Execute o teste.
  • Redefinir para o próximo teste.

Cada um deles retorna um bool (aprovação / reprovação) e uma série ref para uma razão falhar, preenchido em caso de falha.

No lado brilhante, pelo menos, os métodos de ensaio são consistentes.

Estou sentado aqui esta noite contemplando a abordagem que pode levar amanhã de manhã para migrar todo este código de teste para um framework de testes e, francamente, eu não sou tão animado com a idéia de debruçado sobre 8-9K linhas de código de teste à mão para fazer a conversão.

Você teve alguma experiência empreender tal conversão? Você tem alguma dica? Eu acho que poderia ser slogging preso por tudo isso fazendo pesquisa global / substitui e mão-alterando os testes.

Qualquer pensamento?

Foi útil?

Solução

Se você usar NUnit (que você deve), você precisa criar um novo método de ensaio para cada um de seus métodos de teste atuais. NUnit usa reflexão para consultar a classe de teste para métodos marcados com o atributo [Test], que é como ele constrói sua lista dos testes que aparecem na interface do usuário, e as classes de teste usar o método Assert NUnit para indicar se eles já passaram ou falhou.

Parece-me que, se seus métodos de ensaio são tão consistente como você diz, todos esses métodos NUnit seria algo parecido com isto:

[Test]
public void MyTest()
{
   string msg;
   bool result = OldTestClass.MyTest(out msg);
   if (!result)
   {
      Console.WriteLine(msg);
   }
   Assert.AreEqual(result, true);

}

Uma vez que você começa a trabalhar, o próximo passo é escrever um programa que usa a reflexão para obter todos os nomes de métodos de teste em sua classe de teste de idade e produz um arquivo .cs que tem um método NUnit para cada um o seu original métodos de teste.

Annoying, talvez, mas não extremamente dolorosa. E você só precisa fazer isso uma vez.

Outras dicas

Você está prestes a viver através da linguagem da "Uma onça da prevenção vale a pena uma libra de cura". Sua programação em especial verdadeiro.

Você faz nenhuma menção de NUnit (que eu acho que foi comprada pela Microsoft em 2008, mas não me prender a isso). Existe uma razão paticular você não apenas usar NUnit em primeiro lugar?

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