Le programme Java Swing Ă tester
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class App {
public static void main(String[] args) {
// Le champ texte
JTextField nameTextField = new JTextField(15);
nameTextField.setName("firstname-textfield");
// Le bouton
JButton sayHelloBtn = new JButton("Dire bonjour");
sayHelloBtn.setName("say-hello-btn");
// Libellé pour afficher le "bonjour"
JLabel helloLabel = new JLabel();
helloLabel.setName("hello-label");
// Action lors d'un clic sur le bouton
sayHelloBtn.addActionListener(event -> {
// Libellé avec le message "Bonjour"
helloLabel.setText("Bonjour " + nameTextField.getText() + " !");
});
// Élément racine
JPanel root = new JPanel(new FlowLayout(FlowLayout.LEFT));
// Ajoute les composants
root.add(nameTextField);
root.add(sayHelloBtn);
root.add(helloLabel);
// La fenêtre
JFrame frame = new JFrame();
frame.add(root);
frame.setTitle("App");
frame.setSize(600, 75);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Le test AssertJ
import static org.assertj.swing.finder.WindowFinder.findFrame;
import static org.assertj.swing.launcher.ApplicationLauncher.application;
import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.util.stream.IntStream;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
import org.assertj.swing.core.BasicRobot;
import org.assertj.swing.core.ComponentFinder;
import org.assertj.swing.core.GenericTypeMatcher;
import org.assertj.swing.core.Robot;
import org.assertj.swing.fixture.JLabelFixture;
import org.junit.jupiter.api.Test;
class AppTestSwing {
@Test
void should_display_bonjour_with_name() {
// Démarre l'application
application(App.class).start();
// Création du robot
Robot robot = BasicRobot.robotWithCurrentAwtHierarchy();
// Trouve la fenêtre et vérification de son titre et de sa visibilité
findFrame(new GenericTypeMatcher < Frame > (Frame.class) {
protected boolean isMatching(Frame frame) {
return "App".equals(frame.getTitle()) && frame.isShowing();
}
}).using(robot);
// Pour trouver les composants
ComponentFinder finder = robot.finder();
// Les composants
JTextField nameTextField = (JTextField) finder.findByName("firstname-textfield");
JButton sayHelloBtn = (JButton) finder.findByName("say-hello-btn");
JLabel helloLabel = (JLabel) finder.findByName("hello-label");
// Pour tester la valeur du libellé
JLabelFixture labelFixture = new JLabelFixture(robot, helloLabel);
robot.click(nameTextField);
robot.enterText("Pierre");
robot.click(sayHelloBtn);
labelFixture.requireText("Bonjour Pierre !");
robot.click(nameTextField);
// Efface le texte dans le champ (en appuyant sur retour arrière)
robot.pressAndReleaseKeys(IntStream.generate(() -> KeyEvent.VK_BACK_SPACE).limit("Pierre".length()).toArray());
robot.click(nameTextField);
robot.enterText("Paul");
robot.click(sayHelloBtn);
labelFixture.requireText("Bonjour Paul !");
robot.click(nameTextField);
robot.pressAndReleaseKeys(IntStream.generate(() -> KeyEvent.VK_BACK_SPACE).limit("Paul".length()).toArray());
robot.click(nameTextField);
robot.enterText("Jacques");
robot.click(sayHelloBtn);
labelFixture.requireText("Bonjour Jacques !");
}
}
Commentaires
Enregistrer un commentaire