JUnit - Utilizzo dell'asserzione
Asserzione
Tutte le asserzioni sono nella classe Assert.
public class Assert extends java.lang.Object
Questa classe fornisce una serie di metodi di asserzione, utili per la scrittura di test. Vengono registrate solo le asserzioni non riuscite. Alcuni dei metodi importanti della classe Assert sono i seguenti:
Sr.No. | Metodi e descrizione |
---|---|
1 | void assertEquals(boolean expected, boolean actual) Verifica che due primitive / oggetti siano uguali. |
2 | void assertTrue(boolean condition) Verifica che una condizione sia vera. |
3 | void assertFalse(boolean condition) Verifica che una condizione sia falsa. |
4 | void assertNotNull(Object object) Verifica che un oggetto non sia nullo. |
5 | void assertNull(Object object) Verifica che un oggetto sia nullo. |
6 | void assertSame(object1, object2) Il metodo assertSame () verifica se due riferimenti a oggetti puntano allo stesso oggetto. |
7 | void assertNotSame(object1, object2) Il metodo assertNotSame () verifica se due riferimenti a oggetti non puntano allo stesso oggetto. |
8 | void assertArrayEquals(expectedArray, resultArray); Il metodo assertArrayEquals () verificherà se due array sono uguali tra loro. |
Usiamo alcuni dei metodi sopra menzionati in un esempio. Crea un file di classe java denominatoTestAssertions.java in 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);
}
}
Successivamente, crea un file di classe java denominato TestRunner.java in C: \> JUNIT_WORKSPACE per eseguire i casi di test.
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());
}
}
Compilare le classi Test case e Test Runner utilizzando javac.
C:\JUNIT_WORKSPACE>javac TestAssertions.java TestRunner.java
Ora esegui il Test Runner, che eseguirà il test case definito nella classe Test Case fornita.
C:\JUNIT_WORKSPACE>java TestRunner
Verifica l'output.
true
Annotazione
Le annotazioni sono come meta-tag che puoi aggiungere al tuo codice e applicarli ai metodi o in classe. Queste annotazioni in JUnit forniscono le seguenti informazioni sui metodi di test:
- quali metodi verranno eseguiti prima e dopo i metodi di prova.
- quali metodi vengono eseguiti prima e dopo tutti i metodi e.
- quali metodi o classi verranno ignorati durante l'esecuzione.
La tabella seguente fornisce un elenco di annotazioni e il loro significato in JUnit -
Sr.No. | Annotazione e descrizione |
---|---|
1 | @Test L'annotazione Test dice a JUnit che il metodo public void a cui è collegata può essere eseguito come test case. |
2 | @Before Diversi test richiedono oggetti simili creati prima di poter essere eseguiti. L'annotazione di un metodo public void con @Before fa sì che tale metodo venga eseguito prima di ogni metodo di test. |
3 | @After Se si allocano risorse esterne in un metodo Before, è necessario rilasciarle dopo l'esecuzione del test. L'annotazione di un metodo public void con @After fa sì che tale metodo venga eseguito dopo il metodo Test. |
4 | @BeforeClass L'annotazione di un metodo void statico pubblico con @BeforeClass fa sì che venga eseguito una volta prima di uno qualsiasi dei metodi di test nella classe. |
5 | @AfterClass Questo eseguirà il metodo al termine di tutti i test. Questo può essere utilizzato per eseguire attività di pulizia. |
6 | @Ignore L'annotazione Ignora viene utilizzata per ignorare il test e tale test non verrà eseguito. |
Crea un file di classe java denominato JunitAnnotation.java in C: \> JUNIT_WORKSPACE per testare l'annotazione.
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");
}
}
Successivamente, crea un file di classe java denominato TestRunner.java in C: \> JUNIT_WORKSPACE per eseguire le annotazioni.
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());
}
}
Compilare le classi Test case e Test Runner utilizzando javac.
C:\JUNIT_WORKSPACE>javac JunitAnnotation.java TestRunner.java
Ora esegui il Test Runner, che eseguirà il test case definito nella classe Test Case fornita.
C:\JUNIT_WORKSPACE>java TestRunner
Verifica l'output.
in before class
in before
in test
in after
in after class
true