Casos de teste JUnit em Java: Tutorial simples do JUnit 5.7.1 Hello World com detalhes de tudo em um
Publicados: 2019-10-30
O que é JUnit?
JUnit é uma estrutura de código aberto simples e poderosa para escrever e executar testes repetíveis. Eu amo os casos de teste JUnit. Durante o desenvolvimento do meu projeto Java, uso extensivamente o JUnit para cobertura de código. É uma instância da arquitetura xUnit para estruturas de teste de unidade.
Os recursos do JUnit incluem:
- Asserções para testar os resultados esperados
- Dispositivos de teste para compartilhar dados de teste comuns
- Corredores de teste para testes em execução
Neste tutorial, abordarei os pontos 1 e 3. Você precisa das dependências abaixo do maven em seu projeto.
|
1 2 3 4 5 |
< dependency > < groupId > junit < / groupId > < artifactId > junit < / artifactId > < version > 4.12 < / version > < / dependency > |
Vamos começar a escrever código.
Passo 1
Crie o projeto CrunchifyJunitTest e especifique o pacote com.crunchify.junit . Aqui está uma estrutura de pacote para referência rápida.

Passo 2
Clique com o botão direito em CrunchifyJunitTest => New Class => CrunchifyJunitTest.java
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package com . crunchify . junit ; /** * @author Crunchify * */ import static org . junit . Assert . assertEquals ; import org . junit . Test ; public class CrunchifyJunitTest { @ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 30 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello + World" , helloWorld ( ) ) ; } public int addition ( int x , int y ) { return x + y ; } public String helloWorld ( ) { String helloWorld = "Hello +" + " World" ; return helloWorld ; } } |
Etapa 3
O Eclipse irá sugerir e adicionar automaticamente a dependência org.junit.Test assim que você digitar @Test .

Passo 4
Para testar seu teste JUnit
- Clique com o botão direito na classe
- Clique em Executar como
- Clique em
JUnit Test
Você deve ver algo assim.

Passo-5
Tente alterar o parâmetro do valor esperado do método de 30 => 300 e de Hello World => Hello -- World e teste novamente.
|
1 2 3 4 5 6 7 8 9 |
@ Test public void testingCrunchifyAddition ( ) { assertEquals ( "Here is test for Addition Result: " , 300 , addition ( 27 , 3 ) ) ; } @ Test public void testingHelloWorld ( ) { assertEquals ( "Here is test for Hello World String: " , "Hello -- World" , helloWorld ( ) ) ; } |

Passo-6
Agora vamos executar o mesmo caso de teste via other java . Criar CrunchifyRunnerJUnit.java

|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
package com . crunchify . junit ; import org . junit . runner . JUnitCore ; import org . junit . runner . Result ; import org . junit . runner . notification . Failure ; /** * @author Crunchify * */ public class CrunchifyRunnerJUnit { public static void main ( String [ ] args ) { Result result = JUnitCore . runClasses ( CrunchifyJunitTest . class ) ; for ( Failure failure : result . getFailures ( ) ) { System . out . println ( failure . toString ( ) ) ; } if ( result . wasSuccessful ( ) ) { System . out . println ( "Both Tests finished successfully..." ) ; } } } |
Passo-7
Execute CrunchifyRunnerJUnit.java como um Java Application .
Passo-8
No caso do 1st code (parâmetro esperado correto), você deve ver uma saída como esta:
|
1 |
Both Tests finished successfully . . . |
Passo-9
No caso do 2nd code (parâmetro esperado incorreto), você deve ver algo assim:
|
1 2 |
testingCrunchifyAddition ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Addition Result : expected : < 300 > but was : < 30 > testingHelloWorld ( com . crunchify . junit . CrunchifyJunitTest ) : Here is test for Hello World String : expected : < Hello [ -- ] World > but was : < Hello [ + ] World > |
E você está tudo pronto. Avise-me se encontrar algum problema ao executar este código.
Anotação disponível no testcase JUnit:
Anotação | Descrição |
|---|---|
| @Test public void method() | A anotação @Test identifica que um método é um método de teste. |
| @Before public void method() | Irá executar o método antes de cada teste. Este método pode preparar o ambiente de teste (por exemplo, ler dados de entrada, inicializar a classe). |
| @After public void method() | Executará o método após cada teste. Este método pode limpar o ambiente de teste (por exemplo, excluir dados temporários, restaurar padrões). |
| @BeforeClass método void público() | Irá executar o método uma vez, antes do início de todos os testes. Isso pode ser usado para realizar atividades demoradas, por exemplo, para se conectar a um banco de dados. |
| @AfterClass método void público() | Executará o método uma vez, após a conclusão de todos os testes. Isso pode ser usado para realizar atividades de limpeza, por exemplo, para se desconectar de um banco de dados. |
| @Ignorar | Ignorará o método de teste. Isso é útil quando o código subjacente foi alterado e o caso de teste ainda não foi adaptado. Ou se o tempo de execução deste teste for muito longo para ser incluído. |
| @Test (esperado = Exception.class) | Falha, se o método não lançar a exceção nomeada. |
| @Test(tempo limite=100) | Falha, se o método demorar mais de 100 milissegundos. |
Métodos de Teste de Asserção Disponíveis:
Declaração | Descrição |
|---|---|
| falha(String) | Deixe o método falhar. Pode ser usado para verificar se uma determinada parte do código não foi alcançada. Ou ter um teste com falha antes que o código de teste seja implementado. |
| assertTrue(true) / assertTrue(false) | Será sempre verdadeiro/falso. Pode ser usado para predefinir um resultado de teste, se o teste ainda não estiver implementado. |
| assertTrue([mensagem], condição booleana) | Verifica se a condição booleana é verdadeira. |
| assertsEquals([String message], esperado, real) | Testa se dois valores são iguais. Nota: para arrays a referência é verificada e não o conteúdo dos arrays. |
| assertsEquals([String message], esperado, real, tolerância) | Teste se os valores float ou double correspondem. A tolerância é o número de casas decimais que devem ser iguais. |
| assertNull([mensagem], objeto) | Verifica se o objeto é nulo. |
| assertNotNull([mensagem], objeto) | Verifica se o objeto não é nulo. |
| assertSame([String], esperado, real) | Verifica se ambas as variáveis se referem ao mesmo objeto. |
| assertNotSame([String], esperado, real) | Verifica se ambas as variáveis se referem a objetos diferentes. |

