tutorial - prueba unitaria con junit
Informes de JUnit-Descripciones de métodos de prueba (4)
Estoy tratando de ver si hay una manera de incluir "texto descriptivo" en mis informes junit a través de javadocs. Parece que JUnit 4 no admite el atributo ''descripción'' para la anotación @Test como lo hace TestNG.
Tan lejos de lo que he investigado, solo hay una herramienta por ahí llamada javadoc-junit ( http://javadoc-junit.sourceforge.net/ ). Sin embargo, no pude hacer que esto funcionara, ya que parece ser incompatible con Junit 4.
Lo que quiero es alguna forma de proporcionar una o dos oraciones de texto con cada método de prueba en el informe JUnit. JavaDoc no es bueno, ya que la audiencia objetivo tendrá que cambiar entre JavaDoc y el Informe Junit para ver la documentación y / o las estadísticas de las pruebas.
¿Alguien sabe de algo más que pueda usar con el mínimo esfuerzo?
Mejor, ray j
No pongo javadocs en pruebas de JUnit. Por lo general, hago que el nombre del método sea lo suficientemente descriptivo, por lo que es tan bueno o mejor que cualquier comentario que pueda hacer.
Podría imaginar que el Marco para Pruebas Integradas (FIT) sería una solución agradable y limpia.
¿Qué hace FIT?
FIT es un marco que permite escribir pruebas a través de una tabla en un documento de Word, una tabla wiki o una tabla html.
FIT ignora todos los caracteres que se encuentran fuera de una tabla y le permiten ingresar documentación, descripción, requisitos, etc.
¿Cómo se ve una de estas tablas?
Imagine una función MyMath.square(int)
que cuadra su parámetro de entrada. Tienes que construir un llamado Fixture, siendo un adaptador entre tu MyMath
y la siguiente tabla:
class.with.Fixture.Square
x square()
2 4
5 25
La primera columna describe los valores de entrada, la segunda el resultado esperado. Si no es igual, este campo está marcado como rojo.
¿Cómo se ve un accesorio?
Para el ejemplo dado, este sería el accesorio correcto:
package class.with.Fixture // Must be the same as in the fist row of the table
public class Square extends Fixture {
public int x; // Must be the same as in the second row
public int square() { // Must be the same as in the second row
return MyMath.square(x);
}
}
Probablemente, puede utilizar FIT para sus necesidades.
¡Siéntase libre de comentar mi respuesta o editar su pregunta para más información!
También hay una solución bastante reciente llamada Allure . Es un informe de ejecución de prueba basado en Java que se basa principalmente en agregar anotaciones suplementarias al código. Las anotaciones existentes incluyen:
- descripción personalizada: @ Descripción ("Una prueba genial")
- agrupando por características o historias: @Features ({"feature1", "feature2"}) , @Stories ({"story1", "story2"})
- Los métodos de marcado ejecutados en el caso de prueba como pasos: @Paso (funciona incluso para métodos privados)
- adjuntos: @Attachment (nombre = "Captura de pantalla de la página", tipo = "imagen / png")
Ver su wiki y proyecto de ejemplo para más detalles.
En JUnit 5
hay una forma de anotar cada prueba con un @DisplayName
. Las clases de prueba declaradas pueden tener text
, special characters
y emojis
.
El texto declarado en cada prueba es visible por test runners
test reports
y test reports
.
El Javadoc dice:
public @interface DisplayName
@DisplayName se utiliza para declarar un nombre de visualización personalizado para la clase de prueba anotada o el método de prueba. Los nombres para mostrar se utilizan normalmente para informes de prueba en IDE y herramientas de compilación y pueden contener espacios, caracteres especiales e incluso emoji.
Y la junit.org/junit5/docs/current/user-guide/#custom-names del junit.org/junit5/docs/current/user-guide/#custom-names :
import org.junit.gen5.api.DisplayName;
import org.junit.gen5.api.Test;
@DisplayName("A special test case")
class DisplayNameDemo {
@Test
@DisplayName("Custom test name containing spaces")
void testWithDisplayNameContainingSpaces() {
}
@Test
@DisplayName("╯°□°)╯")
void testWithDisplayNameContainingSpecialCharacters() {
}
@Test
@DisplayName("😱")
void testWithDisplayNameContainingEmoji() {
}
}