JUNIT Testes parametrizados junto com o PowerMock - como?
-
20-09-2019 - |
Pergunta
Eu tenho tentado descobrir como executar testes parametrizados no Junit4 juntamente com o PowerMock. O problema é que, para usar o PowerMock, você precisa decorar sua aula de teste com
@RunWith(PowerMockRunner.class)
e para usar testes parametrizados que você deve decorar com
@RunWith(Parameterized.class)
Pelo que posso ver, eles parecem mutuamente excluídos!? Isso é verdade? Existe alguma maneira de contornar isso? Eu tentei criar uma classe parametrizada em uma classe executada com o PowerMock; algo assim:
@RunWith(PowerMockRunner.class)
class MyTestClass {
@RunWith(Parameterized.class)
class ParamTestClass {
// Yadayada
}
}
Mas infelizmente isso não faz muito bem ... o ParamTestClass
Ainda não funciona com o suporte do Powermock (não é surpreendentemente tão surpreendente) ... e eu meio que fico sem idéias, então qualquer ajuda é muito apreciada!
Atualizar:Para futuros Googlers também veja: Usando o PowerMock sem o Runwith?
Solução
Eu tive o mesmo problema. Infelizmente, não me deixou usar uma regra do PowerMock devido à JVM que eu tinha. Em vez da regra, usei o RunnerDelegate.
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)
Outras dicas
Sim, isso funciona usando o PowerMock Regra Disponível se você usar o Junit 4.7+.
Você não pode usar dois corredores de classe de uma só vez, então definitivamente precisará escrever seu próprio corredor de teste para que isso aconteça.
Não sei nada sobre o PowerMock, mas após 10 segundos de pesquisa, parece que uma solução seria escrever um corredor de teste que usa o carregador de classe do PowerMock e executa testes parametrizados. Se você pode descobrir como delegar para o corredor de teste parametrizado em seu corredor de teste personalizado, essa pode ser a sua melhor aposta.