JUnit: uso de aserción
Afirmación
Todas las aserciones están en la clase Assert.
public class Assert extends java.lang.Object
Esta clase proporciona un conjunto de métodos de afirmación, útiles para escribir pruebas. Solo se registran las afirmaciones fallidas. Algunos de los métodos importantes de la clase Assert son los siguientes:
No Señor. | Métodos y descripción |
---|---|
1 | void assertEquals(boolean expected, boolean actual) Comprueba que dos primitivas / objetos sean iguales. |
2 | void assertTrue(boolean condition) Comprueba que una condición sea verdadera. |
3 | void assertFalse(boolean condition) Comprueba que una condición sea falsa. |
4 | void assertNotNull(Object object) Comprueba que un objeto no sea nulo. |
5 | void assertNull(Object object) Comprueba que un objeto sea nulo. |
6 | void assertSame(object1, object2) El método assertSame () prueba si dos referencias de objeto apuntan al mismo objeto. |
7 | void assertNotSame(object1, object2) El método assertNotSame () prueba si dos referencias de objeto no apuntan al mismo objeto. |
8 | void assertArrayEquals(expectedArray, resultArray); El método assertArrayEquals () probará si dos matrices son iguales entre sí. |
Usemos algunos de los métodos mencionados anteriormente en un ejemplo. Cree un archivo de clase java llamadoTestAssertions.java en C: \> JUNIT_WORKSPACE.
import org.junit.Test;
import static org.junit.Assert.*;
public class TestAssertions {
@Test
public void testAssertions() {
//test data
String str1 = new String ("abc");
String str2 = new String ("abc");
String str3 = null;
String str4 = "abc";
String str5 = "abc";
int val1 = 5;
int val2 = 6;
String[] expectedArray = {"one", "two", "three"};
String[] resultArray = {"one", "two", "three"};
//Check that two objects are equal
assertEquals(str1, str2);
//Check that a condition is true
assertTrue (val1 < val2);
//Check that a condition is false
assertFalse(val1 > val2);
//Check that an object isn't null
assertNotNull(str1);
//Check that an object is null
assertNull(str3);
//Check if two object references point to the same object
assertSame(str4,str5);
//Check if two object references not point to the same object
assertNotSame(str1,str3);
//Check whether two arrays are equal to each other.
assertArrayEquals(expectedArray, resultArray);
}
}
A continuación, cree un archivo de clase Java llamado TestRunner.java en C: \> JUNIT_WORKSPACE para ejecutar caso (s) de prueba.
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner2 {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestAssertions.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
Compile las clases Test case y Test Runner usando javac.
C:\JUNIT_WORKSPACE>javac TestAssertions.java TestRunner.java
Ahora ejecute Test Runner, que ejecutará el caso de prueba definido en la clase de Caso de prueba proporcionada.
C:\JUNIT_WORKSPACE>java TestRunner
Verifique la salida.
true
Anotación
Las anotaciones son como metaetiquetas que puede agregar a su código y aplicarlas a métodos o en clase. Estas anotaciones en JUnit proporcionan la siguiente información sobre los métodos de prueba:
- qué métodos se ejecutarán antes y después de los métodos de prueba.
- qué métodos se ejecutan antes y después de todos los métodos, y.
- qué métodos o clases se ignorarán durante la ejecución.
La siguiente tabla proporciona una lista de anotaciones y su significado en JUnit:
No Señor. | Anotación y descripción |
---|---|
1 | @Test La anotación Test le dice a JUnit que el método public void al que está adjunto se puede ejecutar como un caso de prueba. |
2 | @Before Varias pruebas necesitan objetos similares creados antes de que puedan ejecutarse. Anotar un método vacío público con @Before hace que ese método se ejecute antes de cada método de prueba. |
3 | @After Si asigna recursos externos en un método Before, debe liberarlos después de que se ejecute la prueba. Anotar un método de vacío público con @After hace que ese método se ejecute después del método de prueba. |
4 | @BeforeClass Anotar un método void estático público con @BeforeClass hace que se ejecute una vez antes que cualquiera de los métodos de prueba de la clase. |
5 | @AfterClass Esto ejecutará el método después de que hayan finalizado todas las pruebas. Esto se puede utilizar para realizar actividades de limpieza. |
6 | @Ignore La anotación Ignorar se utiliza para ignorar la prueba y esa prueba no se ejecutará. |
Cree un archivo de clase java llamado JunitAnnotation.java en C: \> JUNIT_WORKSPACE para probar la anotación.
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
public class JunitAnnotation {
//execute before class
@BeforeClass
public static void beforeClass() {
System.out.println("in before class");
}
//execute after class
@AfterClass
public static void afterClass() {
System.out.println("in after class");
}
//execute before test
@Before
public void before() {
System.out.println("in before");
}
//execute after test
@After
public void after() {
System.out.println("in after");
}
//test case
@Test
public void test() {
System.out.println("in test");
}
//test case ignore and will not execute
@Ignore
public void ignoreTest() {
System.out.println("in ignore test");
}
}
A continuación, cree un archivo de clase Java llamado TestRunner.java en C: \> JUNIT_WORKSPACE para ejecutar anotaciones.
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(JunitAnnotation.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
Compile las clases Test case y Test Runner usando javac.
C:\JUNIT_WORKSPACE>javac JunitAnnotation.java TestRunner.java
Ahora ejecute Test Runner, que ejecutará el caso de prueba definido en la clase de Caso de prueba proporcionada.
C:\JUNIT_WORKSPACE>java TestRunner
Verifique la salida.
in before class
in before
in test
in after
in after class
true