JUnit Cas de test @Before @BeforeClass Annotation
JUnit est l'unitรฉ la plus populaire Tests cadre dans Java. Il est explicitement recommandรฉ pour Tests unitaires. JUnit ne nรฉcessite pas de serveur pour tester l'application Web, ce qui accรฉlรจre le processus de test.
JUnit Le framework permet รฉgalement la gรฉnรฉration rapide et facile de cas de test et de donnรฉes de test. Le org.Junit Le package comprend de nombreuses interfaces et classes pour JUnit Tests tels que Test, Assert, Aprรจs, Avant, etc.
Qu'est-ce que le dispositif de test
Avant de comprendre ce qu'est un appareil de test, รฉtudions le code ci-dessous
Ce code est conรงu pour exรฉcuter deux cas de test sur un simple fichier.
public class OutputFileTest {
private File output;
output = new File(...);
output.delete();
public void testFile1(){
//Code to verify Test Case 1
}
output.delete();
output = new File(...);
public void testFile2(){
//Code to verify Test Case 2
}
output.delete();
}
Quelques problรจmes ici
- Le code n'est pas lisible
- Le code n'est pas facile ร maintenir.
- Lorsque la suite de tests est complexe, le code peut contenir des problรจmes logiques.
Comparez le mรชme code en utilisant JUnit
public class OutputFileTest
{
private File output;
@Before public void createOutputFile()
{
output = new File(...);
}
@After public void deleteOutputFile()
{
output.delete();
}
@Test public void testFile1()
{
// code for test case objective
}
@Test public void testFile2()
{
// code for test case objective
}
}
Le code beaucoup plus lisible et maintenable. La structure de code ci-dessus est un Appareil d'essai.
Un montage de test est un contexte dans lequel un JUnit Cas de test court. En rรจgle gรฉnรฉrale, les montages de test comprennent :
- Objets ou ressources disponibles pour tout scรฉnario de test.
- Activitรฉs requises qui rendent ces objets/ressources disponibles.
- Ces activitรฉs sont
- allocation (installation)
- dรฉsallocation (teardown).
Installation et dรฉmontage
- Habituellement, certaines tรขches rรฉpรฉtรฉes doivent รชtre effectuรฉes avant chaque scรฉnario de test. Exemple : crรฉer une connexion ร la base de donnรฉes.
- De mรชme, ร la fin de chaque scรฉnario de test, des tรขches peuvent รชtre rรฉpรฉtรฉes. Exemple : pour nettoyer une fois lโexรฉcution du test terminรฉe.
- JUnit fournit des annotations qui facilitent la configuration et le dรฉmontage. Cela garantit que les ressources sont libรฉrรฉes et que le systรจme de test est prรชt pour le prochain scรฉnario de test.
Ces JUnit les annotations sont discutรฉes ci-dessous-
installation
@Avant que annotation dans JUnit est utilisรฉ sur une mรฉthode contenant Java code ร exรฉcuter avant chaque scรฉnario de test. c'est-ร -dire qu'il s'exรฉcute avant chaque exรฉcution de test.
Dรฉmontage (quel que soit le verdict)
@Aprรจs L'annotation est utilisรฉe sur une mรฉthode contenant du code Java ร exรฉcuter aprรจs chaque scรฉnario de test. Ces mรฉthodes s'exรฉcuteront mรชme si des exceptions sont levรฉes dans le scรฉnario de test ou en cas d'รฉchec d'assertion.
Remarque:
- Il est permis d'avoir n'importe quel nombre d'annotations rรฉpertoriรฉes ci-dessus.
- Toutes les mรฉthodes annotรฉes avec @Avant que in JUnit seront exรฉcutรฉs avant chaque scรฉnario de test, mais ils peuvent s'exรฉcuter dans n'importe quel ordre.
- Vous pouvez hรฉriter des mรฉthodes @Before et @After d'une super classe. L'exรฉcution est la suivante : Il s'agit d'un processus d'exรฉcution standard dans JUnit.
- Exรฉcutez le JUnit Mรฉthodes @Before dans la superclasse
- Exรฉcuter les mรฉthodes @Before dans cette classe
- Exรฉcuter une mรฉthode @Test dans cette classe
- Exรฉcutez les mรฉthodes @After dans cette classe
- Exรฉcutez les mรฉthodes @After dans la superclasse
Exemple : Crรฉation d'une classe avec un fichier comme appareil de test
public class OutputFileTest
{
private File output;
@Before public void createOutputFile()
{
output = new File(...);
}
@After public void deleteOutputFile()
{
output.delete();
}
@Test public void testFile1()
{
// code for test case objective
}
@Test public void testFile2()
{
// code for test case objective
}
}
Dans l'exemple ci-dessus, la chaรฎne d'exรฉcution sera la suivante :
- createOutputFile()
- fichiertest1()
- supprimerOutputFile()
- createOutputFile()
- fichiertest2()
- supprimerOutputFile()
Supposition:
testFile1() s'exรฉcute avant testFile2() โ ce qui n'est pas garanti.
Configuration unique
- Il est possible d'exรฉcuter une mรฉthode une seule fois pour toute la classe de test avant l'exรฉcution de l'un des tests et avant tout @Avant que mรฉthode(s).
- Les ยซ installations uniques ยป sont utiles pour dรฉmarrer les serveurs, ouvrir les communications, etc. La fermeture et la rรฉouverture des ressources pour chaque test prennent beaucoup de temps.
- Cela peut รชtre fait en utilisant l'annotation @Avant les cours in JUnit.
@BeforeClass public static void Method_Name() {
// class setup code here
}
Dรฉmolition unique
- Semblable ร la configuration unique, une mรฉthode de nettoyage unique est รฉgalement disponible. Il s'exรฉcute aprรจs toutes les mรฉthodes de cas de test et @Aprรจs les annotations ont รฉtรฉ exรฉcutรฉes.
- Il est utile pour s'arrรชterping serveurs, fermeture des liaisons de communication, etc.
- Cela peut รชtre fait en utilisant le @Aprรจs les cours annotation
@AfterClass public static void Method_Name()
{
// class cleanup code here
}
JUnit Suites de test
Si nous voulons exรฉcuter plusieurs tests dans un ordre spรฉcifique, cela peut รชtre fait en combinant tous les tests en un seul endroit. Cet endroit est appelรฉ suites de tests. Plus de dรฉtails sur la faรงon d'exรฉcuter des suites de tests et sur la faรงon dont elles sont utilisรฉes dans JUnit sera couvert dans ce tutoriel.
Exรฉcuteur de tests Junit
JUnit fournit un outil pour lโexรฉcution de vos cas de test.
- JUnitCore La classe est utilisรฉe pour exรฉcuter ces tests.
- Une mรฉthode appelรฉe classes d'exรฉcution fourni par org.junit.runner.JUnitCลur, est utilisรฉ pour exรฉcuter une ou plusieurs classes de test.
- Le type de retour de cette mรฉthode est le Rรฉsultat objet (org.junit.runner.Rรฉsultat), qui permet d'accรฉder aux informations sur les tests. Voir l'exemple de code suivant pour plus de clartรฉ.
public class Test {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(CreateAndSetName.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
Dans le code ci-dessus, l'objet ยซ rรฉsultat ยป est traitรฉ pour obtenir les รฉchecs et les rรฉsultats positifs des cas de test que nous exรฉcutons.
Prรฉnom JUnit programme
Bonne connaissance de SDLC, de la programmation Java et des bases de test logiciel le processus aide ร comprendre JUnit .
Comprenons les tests unitaires ร l'aide d'un exemple rรฉel. Nous devons crรฉer une classe de test avec une mรฉthode de test annotรฉe avec @Tester comme indiquรฉ ci-dessous :
MaPremiรจreClasseTest.java
package guru99.JUnit;
import static org.JUnit.Assert.*;
import org.JUnit.Test;
public class MyFirstClassTest {
@Test
public void myFirstMethod(){
String str= "JUnit is working fine";
assertEquals("JUnit is working fine",str);
}
}
TestRunner.java
Pour exรฉcuter notre mรฉthode de test (ci-dessus), nous devons crรฉer un lanceur de test. Dans le programme d'exรฉcution de tests, nous devons ajouter une classe de test en tant que paramรจtre dans JUnitMรฉthode runclasses() de Core. Il renverra le rรฉsultat du test, selon que le test a rรฉussi ou รฉchouรฉ.
Pour plus de dรฉtails ร ce sujet, consultez le code ci-dessous :
package guru99.JUnit;
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(MyFirstClassTest.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println("Result=="+result.wasSuccessful());
}
}
Sortie
Une fois TestRunner.java exรฉcute nos mรฉthodes de test, nous obtenons un rรฉsultat comme ayant รฉchouรฉ ou rรฉussi. Veuillez trouver ci-dessous l'explication de la sortie :
- Dans cet exemple, aprรจs avoir exรฉcutรฉ MaPremiรจreClasseTest.java , le test est rรฉussi et le rรฉsultat est en vert.
- En cas d'รฉchec, le rรฉsultat aurait dรป s'afficher en rouge, et un รฉchec est observable. trace. Voir ci-dessous JUnit interface graphique :
Rรฉsumรฉ
- JUnit est un framework qui prend en charge plusieurs annotations pour identifier une mรฉthode contenant un test.
- JUnit fournit une annotation appelรฉe @Test, qui raconte le JUnit que la mรฉthode public void dans laquelle elle est utilisรฉe peut s'exรฉcuter comme scรฉnario de test.
- Un appareil de test est un contexte dans lequel un scรฉnario de test s'exรฉcute
- Pour exรฉcuter plusieurs tests dans un ordre spรฉcifiรฉ, cela peut รชtre fait en combinant tous les tests en un seul endroit. Cet endroit est appelรฉ les suites de tests.
- JUnit fournit un outil pour l'exรฉcution des tests oรน nous pouvons exรฉcuter nos cas de test appelรฉs Test Runner.


