Criar JUnit para testar um método que abrangem todas as suas invocações no espaço de trabalho do Eclipse

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

  •  11-12-2019
  •  | 
  •  

Pergunta

Vamos supor Java seguinte classe:

class MyClass {
   public String methodA( String data, String expression ) {
      // expression is evaluated using data
      // ...
      // this leads to a result which is returned
      return result;
   }
}

Nota, que expression é uma instância de uma expression language (DSL).Assim, a avaliação de expression usando data depende da combinação de ambos.Normalmente, expression é um valor fixo, que não mudam com frequência e data pode mudar ao longo de todas as invocações.

Bem, algum tempo mais tarde um erro é encontrado em MyClass.methodA(String,String).O erro reside em alguns subjacente classe e ocorre apenas para alguns combinação especial de expression e data.Um teste com JUnit é facilmente escrito para este caso especial e pode ser corrigido.

Infelizmente, este método é usado com freqüência em todo o projeto.Eclipse chamada hierarquia identifica mais de 97 outros métodos onde este método é utilizado.Eu, agora, o medo de regressão, se eu aplicar a correcção de bug.Para se sentir mais segura, eu gostaria de fazer alguns testes de regressão.

Normalmente, os testes de unidade devem considerar todos os tipos importantes de invocações, especialmente fronteira dos casos.Mas, como expression é uma DSL que pode variar de altamente, não é fácil para teste de cobertura de todos os potenciais de uso.Além disso, esses testes não identificar falsos uso depender de erro.

Assim, a minha idéia é proceder da seguinte forma:

  1. Encontrar todas as invocações do método (como a utilização de "hierarquia de Chamada" no Eclipse) e extrair todos os valores para expression.

  2. Exemplo suficiente da vida real de valores para data (e.g.a partir de banco de dados) e cruz-avaliar todas as expressões a partir do primeiro passo usando a versão original do MyClass.methodA(String,String).Salve o triplos (data, expression, result) para um arquivo.

  3. Implementar bugfix.

  4. Método de ensaio MyClass.methodA(String,String) utilizando o arquivo acima para afirmar que os resultados não foram alterados.

Seguintes perguntas:

O que você acha dessa abordagem?

Usando a chamada hierarquia no Eclipse eu pode apenas copiar e colar a chamada de métodos, mas não exatamente invocação incluindo os argumentos para a área de transferência (cf.passo 1).Eu teria que copiar a invocar, chamar à mão para cada um método encontrado.Como faço para extrair as invocações de uma forma conveniente (no Eclipse total do espaço de trabalho, assim em vários projetos)?

IMHO, eu sou apenas o teste de um único método, portanto, os testes cobre apenas uma unidade.É ok para usar o JUnit para a etapa 4, ou há algo mais sofisticado?

Foi útil?

Solução

Como o esperado valor adicional por Teste de software é cobrir a maioria das circunstâncias, com custos mais baixos e o máximo resultado, eu concordo com a sua abordagem.

A coleta de práticas samplevalues a partir do seu software de e salvá-los para um representante do arquivo não deve ser a de que o complexo de se realizar e, parece-me ser a melhor forma de analisar esta coisa.Mesmo se você copiá-lo manualmente.

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