Hoy vamos a ver algo muy sencillo, y es simplemente como hacer funcionar JUnit y Mockito desde Eclipse. No es un gran post que nos aporte o clarifique el funcionamiento concreto de una tecnología. Pero si es un post de ayuda que puede sernos util tenerlo a mano para configurar rapidamente nuestro proyecto, sobre todo si no tenemos buena memoría.
Eclipse es uno de las herramientas de desarrollo más famosas y mi preferida, al menos cuando en cuanto a Java se refiere. Facilita mucho el trabajo y en el caso de las pruebas, te permite ejecutarlas facilmente a través del menú contextual. Pudiendo ejecutar un único tests o todos los tests de una determinada clase o proyecto.
El asunto, es que con JUnit 5, no es que sea dificl hacerlo funcionar pero si que requiere de un mínimo de configuración.
Antes de empezar vamos a ver como siempre un poco de teoría. JUnit 5 es la suma de tres proyectos diferentes:
- JUnit Platform: Es la base del Framework de testing. Y contiene la API de testing que nos permite ejecutar lso tests.
- JUnit Jupiter: Es la librería que contiene el nuevo modelo de programación de JUnit 5 y su modelo de extensión. Incluye anotaciones como @Tests, imprecindibles.
- JUnit Vintage: Es el proyecto que nos permite ejecutar versiones antiguas de JUnit, concretamente las versiones 3 y 4. Por tanto, este proyecto no lo necesitaremos.
<!-- junit.jupiter.version = 5.7.1 --><!-- junit.platform.version = 1.7.1 --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>${junit.jupiter.version}</version><scope>test</scope></dependency><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-runner</artifactId><version>${junit.platform.version}</version><scope>test</scope></dependency>
Ya solo nos queda preparar nuestro test para que podamos ejecutarlo. Las pruebas las podremos ejecutar desde Eclipse o con comandos Maven. Eso sí, para ejecutarlas desde eclipse es necesario utilizar el Eclipse Photon o alguno posterior.
Aparte del la anotación imprescindible de @Test sobre cada uno de los tests que desarrollemos. Esta última anotación es la que permitirá que los métodos de la clase sean tenidos en cuenta como tests por Eclipse.
public class BookDaoTest {@Testvoid getBook(final TestInfo testInfo) {BookDao dao = new BookDao();Book book = dao.getById(0L);assertThat(book.getId(), equalTo(0L));}}
Pero necesitaremos una actualización más de nuestro proyecto si queremos que dichas pruebas sean tenidas en cuenta por Maven. Y es usar una versión del plugin maven-surefire-plugin superior a 2.22.0
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> </plugin>
Como hemos dicho podemos ejecutar el código con el típico comando de maven:
mvn clean test
O directamente sobre eclipse a través del menú contextual, si queremos ejecutar únicamente una clase o método concreto:
<!-- mockito.version = 3.8.0 --> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-junit-jupiter</artifactId> <version>${mockito.version}</version> <scope>test</scope> </dependency>
@ExtendWith(MockitoExtension.class) public class BookDaoTest { @Mock BookDao dao; @Test void getBook(final TestInfo testInfo) { Book bookMocked = new Book(0L, "Orson S. Card", "Ender's Game"); when(dao.getById(0L)).thenReturn(bookMocked); Book book = dao.getById(0L); assertThat(book.getName(), equalTo("Ender's Game")); } }
No hay comentarios:
Publicar un comentario