wollok
wollok copied to clipboard
Migrar la version de junit
Segun lo hablado en este PR, estaria bueno migrar la version de junit hacia 5.
Ya que esta contiene features copada como DisplayName
y Nested
que van a hacer que nuestros tests sean mas legibles al momento de correrlos/leerlos.
@Juancete ya que estamos haciendo la migración a dev-2.0, por ahí convendría probar de meter la dependencia a JUnit 5 y ver si no se rompen los tests (no se si serán retrocompatibles).
@fdodino Ok, puedo hacer la prueba y vemos los resultados
Acabo de linkear tres artículos:
- https://developer.ibm.com/dwblog/2017/top-five-reasons-to-use-junit-5-java/
- https://howtodoinjava.com/junit5/junit-5-vs-junit-4/
- https://www.baeldung.com/junit-5-migration
En el primer artículo se menciona que es totalmente retrocompatible JUnit 5 con Junit 4 (e incluso con JUnit 3) así que sería iterativa la migración de los 1300 tests (en lugar de 2400)
Y efectivamente es retrocompatible por el componente JUnit Vintage
. La doc oficial es https://junit.org/junit5/docs/current/user-guide/. A mí mucho no me gusta cómo pasaron las annotations a assertions con lambdas (estilo expected ahora se envuelve en una lambda, medio como en Wollok), pero bueh... seguiré pispeando.
Revisando como migrar dentro del proyecto me encuentro en el POM del proyecto test estas líneas
<dependencies>
<!-- Force using the latest JUnit 47 provider -->
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.8</version>
</dependency>
</dependencies>
Y buscando que dependencia encontré surefire-junit5 en versión ALPHA del año 2016. Me metió un poco de miedo esto.
Pero seguí buscando y encontré esta página de surefire que indica que si subimos las versión, parece manejar ambos mundos sin problemas, por lo tanto volaría las líneas que fuerzan a trabajar con una versión específica de JUnit. Creo que voy por este camino para la prueba.
Y una más: https://leeturner.me/posts/building-a-camel-case-junit5-displaynamegenerator/ , con la annotation DisplayNameGenerator.Standard
automáticamente convertís camelCase a espacios, aunque los números se los lleve puestos, en ese artículo le puso onda esta persona para que no pase, e incluso le metió emojis.
Dejo un link interesante para manejar la migración con maven https://wiki.eclipse.org/Tycho/How_Tos/JUnit5
https://blogs.itemis.com/en/xtext-2.14-adds-support-for-junit-5
https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html
Otros materiales de lectura aportados por @fdodino
Xpect doesn't support JUnit 5. https://github.com/eclipse/Xpect/issues/262
We have to go back to JUnit 4
https://hub.packtpub.com/testing-xtext-and-xtend/
Buen link que explica un poco como se testea el lenguaje