[Java][NetBeans]No runnable methods

Salut les geeks,

Ca fait une demi-heure que je me casse le crâne sur un problème stupide, j’ai rien trouvé d’intelligible sur le web concernant ce problème alors je me lance.

Je suis en train de coder un jeu de tarot en java dans le cadre de mes études, et comme je n'aime pas avoir 43 fenêtres et demi d'emacs ouvertes simultanément, j'utilise [b]NetBeans[/b].

J’ai jamais utilisé d’IDE avant, et je connais pas vraiment la meilleure façon de s’y prendre. Et si je m’y prends comme une bille, vous avez le droit de me lancer des tomates pourries.

J’aimerais donc pouvoir tester mes classes situées dans mon package GameCore, je crée donc un nouveau package TestGameCore dans les packages de test.

En essayant d’exécuter ma classe TestCarteCouleur (Run>Run File), j’obtiens une erreur peu sympathique (java.lang.Exception: No runnable methods) dont voici la sortie :

[code]deps-jar:
compile:
Compiling 1 source file to F:\Documents\NetBeansProjects\Tarot\build\test\classes
compile-test-single:
Created dir: F:\Documents\NetBeansProjects\Tarot\build\test\results
Testsuite: TestGameCore.TestCarteCouleur
Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0,032 sec

Testcase: TestGameCore.TestCarteCouleur: Caused an ERROR
No runnable methods
java.lang.Exception: No runnable methods

Test TestGameCore.TestCarteCouleur FAILED
F:\Documents\NetBeansProjects\Tarot\nbproject\build-impl.xml:553: Some tests failed; see details above.
BUILD FAILED (total time: 0 seconds)[/code]

Et, en plus, le code de la classe :

[code]package TestGameCore;

import java.util.;
import GameCore.
;
/**
*

  • @author Thomas Monzie
    */

public class TestCarteCouleur
{
public static void main(String[] args)
{
Couleur trefle, pique, carreau, coeur;
trefle = new Couleur(“Trefle”);
pique = new Couleur(“Pique”);
carreau = new Couleur(“Carreau”);
coeur = new Couleur(“Coeur”);

	ArrayList <Couleur> couleurs = new ArrayList <Couleur > ();
	
	couleurs.add(coeur);
	couleurs.add(carreau);
	couleurs.add(pique);
	couleurs.add(trefle);
	
	Tas deck = new Tas();
	
	for(int j = 0; j < couleurs.size(); ++j)
	for(int i = 0; i <=14; ++i)
	{
		deck.add(new CarteCouleur(i, couleurs.get(j)));
	}
	
	for(int i = 0; i < 22; i++)
	{
		deck.add(new Atout(i));
	}
	
	System.out.println("Deck:\n"+deck);
}	

}[/code]

Voilà.

Donc : qu’est-ce qu’une runnable method? Main n’en est-elle pas une? Qu’ai-je encore fait comme connerie?

Merci d’avance

Pour faire simple ton test doit utiliser la bibliothèque JUnit http://www.junit.org/.

Le Cookbook explique très bien comment tu dois t’y prendre : http://junit.sourceforge.net/doc/cookbook/cookbook.htm

Il faut que tu utilises des “assert” pour que ton test vérifie lui-même si c’est OK ou non, un exemple vaux mieux que des longs discours :

@Test public void simpleAdd() { Money m12CHF= new Money(12, "CHF"); Money m14CHF= new Money(14, "CHF"); Money expected= new Money(26, "CHF"); Money result= m12CHF.add(m14CHF); assertTrue(expected.equals(result)); }

D’après le message d’erreur, on dirait qu’il s’agit plus d’une erreur lors de tests et non lors de l’exécution de ta classe.
On dirait que le système de test netbeans attends que tu définisse des méthodes à tester ( un peu comme le ferait un JUnit).

Bref, oriente toi vers le paramétrage du projet, avec la désactivation des tests. Sinon, passe à Eclipse, nettement plus représenté dans le monde du développement.

Okay ! J’avais vu le principe en génie logiciel, mais on ne l’a jamais mis en pratique. C’est maintenant ou jamais ^^

Merci, en tout cas !

Si jamais tu veux tester des classes faisant appel à des interfaces ou d’autres classes pas encore implémentées tu peux aussi regarder vers jmock qui permet de mocker des objets et définir le comportement souhaité. En gros, tu définis combien de fois une méthode peut etre appelée et tu défini aussi sa valeur de retour. Super pratique quand tu attends après une implémentation mais que tu aimerais tester ta partie.