Quero escrever casos de teste para uma grande parte do código, gostaria de saber detalhes do @Rule
recurso de anotação JUnit , para que eu possa usá-lo para escrever casos de teste. Forneça boas respostas ou links, que fornecem uma descrição detalhada de sua funcionalidade através de um exemplo simples.
java
junit
junit4
junit-rule
Dipak
fonte
fonte
@Rule
muito bem, especialmente confira a última seção "A sequência dos eventos em detalhes"Respostas:
As regras são usadas para adicionar funcionalidades adicionais que se aplicam a todos os testes dentro de uma classe de teste, mas de uma maneira mais genérica.
Por exemplo, ExternalResource executa o código antes e depois de um método de teste, sem precisar usar
@Before
e@After
. Usar umExternalResource
ao invés de@Before
e@After
dá oportunidades para uma melhor reutilização de código; a mesma regra pode ser usada em duas classes de teste diferentes.O design foi baseado em: Interceptores no JUnit
Para mais informações, consulte wiki do JUnit: Rules .
fonte
As regras do Junit trabalham com o princípio da AOP (programação orientada a aspectos). Ele intercepta o método de teste, oferecendo a oportunidade de fazer algumas coisas antes ou depois da execução de um método de teste específico.
Veja o exemplo do código abaixo:
Sempre que o método de teste acima é executado, uma pasta temporária é criada e é excluída após a execução do método. Este é um exemplo de uma regra pronta para uso fornecida pela Junit.
Comportamento semelhante também pode ser alcançado criando nossas próprias regras. O Junit fornece a interface TestRule, que pode ser implementada para criar nossa própria regra de junit.
Aqui está um link útil para referência:
fonte
tl; dr para saber como funciona: JUnit agrupa seu método de teste em um objeto Statement para que statement.Execute () execute seu teste. Em vez de chamar o statement.Execute () diretamente para executar seu teste, o JUnit passa o Statement para um TestRule com a anotação @Rule. A função "aplicar" do TestRule retorna uma nova instrução, dada a instrução com seu teste. O novo método Execute () da instrução pode chamar o método de execução da instrução de teste (ou não, ou chamá-lo várias vezes) e fazer o que quiser antes e depois. Agora, o JUnit possui uma nova instrução que faz mais do que apenas executar o teste, e pode passar novamente a outras regras antes de finalmente chamar Execute.
fonte
As regras são usadas para aprimorar o comportamento de cada método de teste de maneira genérica. A regra Junit intercepta o método de teste e nos permite fazer algo antes que um método de teste inicie a execução e depois que um método de teste foi executado.
Por exemplo, usando a regra @Timeout , podemos definir o tempo limite para todos os testes.
A regra @TemporaryFolder é usada para criar pastas e arquivos temporários. Toda vez que o método de teste é executado, uma pasta temporária é criada e é excluída após a execução do método.
Você pode ver exemplos de algumas regras internas fornecidas por junit neste link .
fonte