Em nosso projeto, tenho vários testes JUnit que, por exemplo, pegam cada arquivo de um diretório e executam um teste nele. Se eu implementar um testEveryFileInDirectory
método no, TestCase
isso aparecerá como apenas um teste que pode falhar ou ter sucesso. Mas estou interessado nos resultados de cada arquivo individual. Como posso escrever um TestCase
/ de TestSuite
modo que cada arquivo apareça como um teste separado, por exemplo, no TestRunner gráfico do Eclipse? (Codificar um método de teste explícito para cada arquivo não é uma opção).
Compare também a questão ParameterizedTest com um nome no Eclipse Testrunner .
java
unit-testing
junit
parameterized-unit-test
Hans-Peter Störr
fonte
fonte
Respostas:
Dê uma olhada nos testes parametrizados no JUnit 4.
Na verdade, eu fiz isso há alguns dias. Vou tentar explicar ...
Primeiro construa sua classe de teste normalmente, já que você estava apenas testando com um arquivo de entrada. Decore sua aula com:
Construir um construtor que recebe a entrada que mudará a cada chamada de teste (neste caso, pode ser o próprio arquivo)
Então, construa um método estático que retornará um
Collection
de arrays. Cada array na coleção conterá os argumentos de entrada para seu construtor de classe, por exemplo, o arquivo. Decore este método com:Aqui está um exemplo de aula.
Verifique também este exemplo
fonte
JUnit 3
JUnit 4
fonte
Testes Parametrizados Junit 5
Os testes parametrizados JUnit 5 suportam isso, permitindo o uso de um método como fonte de dados :
JUnit 5 DynamicTests
O JUnit 5 também suporta isso por meio da noção de a
DynamicTest
, que deve ser gerado em a@TestFactory
, por meio do método estáticodynamicTest
.Os testes executados em seu IDE (IntelliJ aqui) serão exibidos assim:
fonte
Deve ser possível no JUnit 3 herdando
TestSuite
e substituindo otests()
método para listar os arquivos e para cada retorno uma instância de uma subclasse deTestCase
que leva o nome do arquivo como parâmetro do construtor e tem um método de teste que testa o arquivo fornecido no construtor.No JUnit 4 pode ser ainda mais fácil.
fonte
Você poderia considerar o uso da biblioteca JUnitParams , então você teria mais algumas opções (mais limpas):
Você pode ver mais exemplos de uso aqui .
Além do JUnitParams, por que escrever testes parametrizados com ele é mais fácil e legível :
fonte
Se TestNG for uma opção, você pode usar Parâmetros com DataProviders .
O teste de cada arquivo individual terá seu resultado mostrado no relatório baseado em texto ou na IU do plugin TestNG do Eclipse. O número total de testes executados contará cada um de seus arquivos individualmente.
Esse comportamento difere das teorias JUnit , nas quais todos os resultados são agrupados em uma entrada de "teoria" e contam como apenas 1 teste. Se você quiser relatórios de resultados separados em JUnit, você pode tentar testes parametrizados .
Teste e entradas
Saída de exemplo
fonte
Eu tive um problema semelhante e acabei escrevendo um simples runner JUnit 4 que permite ao med gerar testes dinamicamente.
https://github.com/kimble/junit-test-factory
fonte