Précédent   Forum du club des développeurs et IT Pro > Java > EDI et OUTILS pour Java > Tests et Performance
Tests et Performance Vos questions sur les APIs et Outils de tests unitaires, d'intégration, de performance, profiling, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/08/2012, 16h15   #1
nddvlp
Futur Membre du Club
 
Homme
Inscription : décembre 2011
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : décembre 2011
Messages : 70
Points : 19
Points : 19
Par défaut Fest Swing NullPointer sur mes éléments

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 :
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) :

Code :
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();
	}
}
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();

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
nddvlp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2012, 17h22   #2
nddvlp
Futur Membre du Club
 
Homme
Inscription : décembre 2011
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : décembre 2011
Messages : 70
Points : 19
Points : 19
Je viens de trouver la raison...

Mon test ne passait pas dans la méthode setUp().
L'annotation @BeforeMethod ne fonctionne pas apparament alors.

En la remplacant par @Before, mon test ne me donne plus d'erreur.

Cependant, il echoue en me disant que result1 est vide.
nddvlp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2012, 18h30   #3
Mathieu.J
Modérateur
 
Homme Mathieu
Ingénieur développement logiciels
Inscription : avril 2004
Messages : 1 180
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2004
Messages : 1 180
Points : 1 829
Points : 1 829
Tu utilisais des annotations TestNG dans un test JUnit.
C'est pour ça que les annotations ne fonctionnent pas.


As-tu vérifié (Debugger ou affichage) que tu passes bien dans le actionPerformed ?
Tes panels haut et bas sont ils bien ajoutés à la fenêtre ?
Mathieu.J est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2012, 08h41   #4
nddvlp
Futur Membre du Club
 
Homme
Inscription : décembre 2011
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : décembre 2011
Messages : 70
Points : 19
Points : 19
Merci pour l'explication.

Je viens de vérifier et mon test ne passe effectivement pas par le actionPerformed. Je ne comprends pas car la simulation du click devrait l'y faire passer non?

Mes panels sont bien affichés (j'ai rajouté un label pour le voir) mais je ne vois pas mon bouton lors de l'exécution du test...
nddvlp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h36.


 
 
 
 
Partenaires

Hébergement Web