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: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.
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