Conectando a estrutura JUnit

Para testar o código Java, temos um ótimo framework chamado JUnit . Funciona muito bem, é constantemente atualizado, é muito popular e, claro, o Intellij IDEA está totalmente integrado a ele.

Agora todos estão usando a quinta versão deste framework - JUnit 5 , embora em muitos projetos você ainda possa encontrar sua quarta versão. Eles não são muito diferentes, mas vamos dar uma olhada no mais recente de qualquer maneira. Acho que quando você começar a escrever testes ativamente, aprovará minha escolha.

Então, como adicionar o JUnit ao projeto? Depois de aprender Maven será fácil: basta adicionar este código ao seu pom.xml:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
	<version>5.8.1</version>
	<scope>test</scope>
</dependency>

A propósito, se você quiser que o Maven execute seus testes no estágio de compilação ( estágio de teste ), será necessário adicionar mais um fragmento ao pom.xml:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
	<version>2.19.1</version>
	<dependencies>
    	<dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.3.2</version>
    	</dependency>
	</dependencies>
</plugin>

@Test anotação

Digamos que você tenha uma classe que deseja testar. Qual é a melhor maneira de fazer isso? Vamos começar com algum exemplo, porque é difícil testar uma classe abstrata :)

Suponha que temos uma classe Calculadora que pode realizar 4 operações básicas: adição, subtração, multiplicação e divisão. Vamos escrevê-lo:

class Calculator {
    	public int add(int a, int b) {
        	return a+b;
    	}

    	public int sub(int a, int b) {
        	return a-b;
    	}

    	public int mul (int a, int b) {
        	return a*b;
    	}

    	public int div(int a, int b) {
        	return a/b;
    	}
}

Queremos testar os métodos desta classe. Nunca se sabe, no futuro eles mudam alguma coisa e tudo para de funcionar. Como podemos escrever testes para isso?

Precisamos criar outra classe. Para fazer isso, eles geralmente usam o mesmo nome e adicionam o sufixo Test . Para cada método, você deve adicionar pelo menos um método de teste. Exemplo:

class CalculatorTest {
   	@Test
    	public void add() {
    	}
   	@Test
    	public void sub() {
        }
   	@Test
    	public void mul() {
    	}
   	@Test
    	public void div() {
    	}
}

Costumava haver um requisito de que o nome do método começasse com a palavra test , mas isso não é mais necessário.

Exemplos de teste JUnit

Vamos escrever alguns exemplos nos quais testaremos os métodos da nossa classe CalculatorTest :

class CalculatorTest {
   	@Test
    	public void add() {
        	Calculator calc = new Calculator();
        	int result = calc.add(2, 3);
        	assertEquals(5, result);
    	}

   	@Test
    	public void sub() {
        	Calculator calc = new Calculator();
        	int result = calc.sub(10, 10);
        	assertEquals(0, result);
        }

   	@Test
    	public void mul() {
        	Calculator calc = new Calculator();
        	int result = calc.mul(-5, -3);
        	assertEquals(15, result);
    	}

   	@Test
    	public void div() {
        	Calculator calc = new Calculator();
        	int result = calc.div(2, 3);
        	assertEquals(0, result);
    	}
}

É assim que um teste JUnit típico se parece. Do interessante: o método especial assertEquals() é usado aqui : ele compara os parâmetros passados ​​para ele, conforme indicado pela palavra equals em seu nome.

Se os parâmetros passados ​​para assertEquals() não forem iguais, o método lançará uma exceção e o teste falhará. Essa exceção não impedirá a execução de outros testes.