Nesta postagem do blog, vou explicar qual é a principal diferença entre esses métodos. Em primeiro lugar, por que usamos esses métodos. Este método será útil quando testarmos o desempenho de nossos métodos ou quisermos saber quanto tempo nosso método leva para ser concluído.
Primeiro temos que dar tempo ao nosso método de teste, depois disso esses testes executam operações no teste. Se esta operação levar mais tempo do que o especificado, este teste falhará.
Ok, agora sabemos o que são esses métodos e por que os usamos em nossos métodos de teste. Então devemos saber a diferença.
Deixe-me explicar brevemente. O método assertTimeout conta o tempo que damos, se nosso método de teste demorar mais do que o especificado, este teste falhará após todas as operações serem concluídas. No entanto, se o método assertTimeoutPreemptively demorar mais do que o especificado, esse método falhará imediatamente. E não vai esperar a conclusão de todos os processos, vamos testar isso no projeto na próxima etapa.
Primeiro abra seu IDE favorito. Abro o Intellij Idea porque este IDE é muito popular entre os desenvolvedores Java. Claro que você pode usar IDE favorito, como Eclipse, Netbeans, qual você preferir.
Agora crie um novo projeto Maven e adicione essas 2 dependências ao seu arquivo pom.xml.
org.junit.jupiter junit-jupiter-api 5.3.1 test org.junit.jupiter junit-jupiter-engine 5.3.1 test
Depois de adicioná-los, abra a pasta src/test/java e
Crie uma nova classe e dê o nome que quiser que darei TimeoutTest.
Crie 2 métodos de teste, um deles testa assertTimeout e o outro testa assertTimeoutPreemptively.
Depois disso eu dou a duração e adiciono uma mensagem impressa simples.
Eu adiciono o método Thread.sleep() e Thread dorme 8000 ms (8 segundos). Mas esses 2 métodos falharão porque levam mais de 3 segundos. Deixe-me testar esses métodos para entender melhor.
E você vê que o método testAssertTimeout leva 8s 3ms porque esse método espera para concluir todas as operações, mas o outro leva 3s 45ms e não espera para concluir outro processo , ele falha imediatamente.
Você pode ver a mensagem que o método testAssertTimeout imprime a mensagem, mas o método assertTimeoutPreemptively não imprime a mensagem, ele ignorou outras operações.
Neste post falamos sobre a principal diferença entre assertTimeout e assertTimeoutPreemptively.
Finalmente o código está disponível no Github.
Cuide-se, até breve.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3