Bonjour à tous,
je me lance dans le test d'interface grapique avec la librairie Fest-Swing.
Pour débuter, j'ai voulu réaliser un petit test tout simple : une fenêtre contenant un bouton. Quand l'utilisateur clique sur le bouton, un label affiche "Click".
Voici le code de ma fenêtre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class Fenetre extends JFrame { private JButton btn; private Container panel_haut; private JLabel result1; private JPanel panel_bas; public Fenetre() { this.setSize(new Dimension(600,200)); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); ... result1 = new JLabel(); result1.setName("result1"); result1.setHorizontalAlignment(SwingConstants.CENTER); result1.setBounds(0, 0, 300, 30); panel_bas.add(result1); btn = new JButton("Click me!"); btn.setName("clickButton"); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { result1.setText("Click"); } }); btn.setBounds(259, 79, 112, 53); panel_haut.add(btn); } }
Ensuite, j'ai écrit le test suivant (en me basant sur http://www.javaworld.com/javaworld/j...st.html?page=2) :
Le problème est que lorsque j'exécute mon test, il me lance un java.lang.NullPointerException sur la ligne frame.button("clickButton").click();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 import org.fest.swing.fixture.FrameFixture; import org.junit.Test; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; public class FenetreTest { private FrameFixture frame; @BeforeMethod public void setUp() { frame = new FrameFixture(new Fenetre()); frame.show(); } @Test public void shouldShowClickIfUserClickButton() { frame.button("clickButton").click(); frame.label("result1").requireText("Click"); } @AfterMethod public void tearDown() { frame.cleanUp(); } }
Je supose donc qu'il ne trouve pas mon bouton. Pourtant j'ai fait correspondre le nom avec celui que l'on trouve dans Fenetre.
Quelqu'un aurait-il une idée?
Merci beaucoup
Partager