Labs SD > Web Services

Testes de Integração com JUnit

Os testes de integração (integration tests) verificam o comportamento de vários componentes do sistema.
Por outras palavras, verificam se os componentes se integram bem uns com os outros.

O JUnit é uma biblioteca Java para escrever testes ao código. Também pode ser usada para fazer testes de integração.

Os testes de integração no JUnit 4 usam as mesmas anotações para definir qual o papel dos métodos: Os testes de integração usam as mesmas funções de assert para verificar o resultado esperado de cada teste:

Uma classe de testes de integração tem a seguinte estrutura:

package example.it;

import org.junit.*;
import static org.junit.Assert.*;

/** Integration test suite */
public class ExampleIT {

    // static members

    
    // one-time initialization and clean-up
    @BeforeClass
    public static void oneTimeSetUp() {
        // runs once before all tests in the suite
    }

    @AfterClass
    public static void oneTimeTearDown() {
        // runs once after all tests in the suite
    }

    // members

    
    // initialization and clean-up for each test
    @Before
    public void setUp() {
        // runs before each test
    }

    @After
    public void tearDown() {
        // runs after each test
    }

    // tests
    @Test
    public void testSomething() {
        // do something ...
    
        // assertEquals(expected, actual);
        // if the assert fails, the test fails
    }
}

Por convenção, as classes de testes de integração terminam com (IT).
Devem ser também arrumadas na pasta src/test/java do projeto.

O Maven executa os testes de integração na fase verify do ciclo de vida. Antes disso, é necessário configurar o plug-in Failsafe da forma ilustrada abaixo:

    ...
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.19.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Os exemplos seguintes mostram como correr os testes de integração e como controlar quais os testes a executar.

// to compile and execute all integration tests
$ mvn verify

// to execute only a specific test class
$ mvn verify -Dit.test=PingIT

// to execute only a specific test
$ mvn verify -Dit.test=PingIT#testPing

// you can also use wildcards (the example below will match classes starting with P)
$ mvn verify -Dit.test=P*

// to skip integration tests
$ mvn install -Dit.test.skip=true

Podem encontrar mais exemplos no manual.

 

Exceções nos Testes de Integração

Os testes de integração terão que lidar com exceções dos Web Services, quer as geradas na aplicação, quer as geradas na comunicação.

Bons testes! :)


© Docentes de Sistemas Distribuídos, Dep. Eng. Informática, Técnico Lisboa