JUnit | Tester un seul parametre d'une méthode
Fermé
Krimofcb
-
29 mars 2020 à 14:36
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 30 mars 2020 à 16:24
KX Messages postés 16668 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 17 mars 2023 - 30 mars 2020 à 16:24
A voir également:
- JUnit | Tester un seul parametre d'une méthode
- Dans le texte, un seul mot a réellement été écrit en lettres capitales (majuscules). quel est ce mot ? ✓ - Forum Word
- Paramètre s'arrête systématiquement - Forum Samsung
- Méthode java - Astuces et Solutions
- Tester performance pc - Guide
- Remettre parametre usine pc - Guide
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
30 mars 2020 à 14:31
30 mars 2020 à 14:31
Bonjour,
"tester un paramètre en particulier d'une méthode, et non pas la méthode en entier et ce qu'elle retourne."
En complément de JUnit on utilise souvent Mockito pour faire des tests.
Ci-dessous un exemple complet librement inspiré de la description de ton programme.
Lorsque l'on appel
"tester un paramètre en particulier d'une méthode, et non pas la méthode en entier et ce qu'elle retourne."
En complément de JUnit on utilise souvent Mockito pour faire des tests.
Ci-dessous un exemple complet librement inspiré de la description de ton programme.
Lorsque l'on appel
ihm.boutonValider()dans le test, on peut vérifier que
creerFichierJsona bien été appelé et que les valeurs passées en paramètres sont bien celles que l'on pensait et pourtant on peut apercevoir que l'affichage du
System.out.printfne s'est pas fait, c'est parce que la vraie méthode n'a jamais été appelé (ce qui correspond exactement à ce que tu voulais faire).
- JsonService.java
public class JsonService {
public void creerFichierJson(String nom, String prenom, String mail, String telephone) {
System.out.printf("{'nom':'%s','prenom':'%s','mail':'%s','telephone':'%s'}", nom, prenom, mail, telephone);
}
}
- InterfaceGraphique.java
import javax.swing.JTextField;
public class InterfaceGraphique {
private JTextField nom = new JTextField();
private JTextField prenom = new JTextField();
private JTextField mail = new JTextField();
private JTextField telephone = new JTextField();
private JsonService jsonService = new JsonService();
public void boutonValider() {
getJsonService().creerFichierJson(
getNom().getText(),
getPrenom().getText(),
getMail().getText(),
getTelephone().getText());
}
// getXxx et setXxx
// ...
}
- InterfaceGraphiqueTest.java
import java.util.List;
import javax.swing.JTextField;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.*;
import org.mockito.invocation.Invocation;
import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
public class InterfaceGraphiqueTest {
@InjectMocks
private InterfaceGraphique ihm;
@Mock
private JTextField nomMock;
@Mock
private JTextField prenomMock;
@Mock
private JTextField mailMock;
@Mock
private JTextField telephoneMock;
@Mock
private JsonService jsonServiceMock;
@BeforeEach
public void beforeEach() {
ihm.setNom(nomMock);
ihm.setPrenom(prenomMock);
ihm.setMail(mailMock);
ihm.setTelephone(telephoneMock);
ihm.setJsonService(jsonServiceMock);
}
@Test
public void boutonValider() throws Exception {
Mockito.when(nomMock.getText()).thenReturn("MonNom");
Mockito.when(prenomMock.getText()).thenReturn("MonPrenom");
Mockito.when(mailMock.getText()).thenReturn("MonMail");
Mockito.when(telephoneMock.getText()).thenReturn("MonTelephone");
ihm.boutonValider();
List<Invocation> invocations = (List<Invocation>) Mockito.mockingDetails(jsonServiceMock).getInvocations();
Assertions.assertEquals(1, invocations.size(), "JsonService doit avoir été appelé exactement 1 fois");
Assertions.assertEquals(
JsonService.class.getMethod("creerFichierJson", String.class, String.class, String.class, String.class),
invocations.get(0).getMethod(),
"La méthode appelée doit être JsonService.creerFichierJson");
Assertions.assertArrayEquals(
new Object[] {"MonNom", "MonPrenom", "MonMail", "MonTelephone"},
invocations.get(0).getArguments(),
"Les valeurs passées en paramètre de creerFichierJson doivent correspondre à celles attendues");
}
}
- pom.xml
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.6.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>3.3.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>3.3.3</version>
<scope>test</scope>
</dependency>
</dependencies>
30 mars 2020 à 15:39
30 mars 2020 à 16:24
J'ai juste rajouté une bibliothèque complémentaire (Mockito) car je ne vois pas comment tu pourrais y arriver avec JUnit seul, à moins de refaire ce que fait déjà Mockito...