IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tests et Performance Java Discussion :

JUnit que faut il mettre dans la classe de test [JUnit]


Sujet :

Tests et Performance Java

  1. #1
    Membre du Club Avatar de maysam
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 112
    Points : 60
    Points
    60
    Par défaut JUnit que faut il mettre dans la classe de test
    bonjour à tous
    je dois ecrire une calsse de test pour ma classe SearchBean. Le problème c'est que je ne sais pas qoui mettre dedans vu que tos les exmples sur le net sont très simple du genre vérifier une addition...
    dans ma classe SearchBean je dois teter une méthode qui renvoi une liste de String qui peut §etre vide.
    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
    public class SearchBean implements Pmo{
    	   @PersistenceContext (name="pmo")
    	   private EntityManager em;
    @WebMethod
    	public String[] search(String keywords) throws ParseException {
    		FullTextEntityManager fullTextEntityManager = Search.createFullTextEntityManager(em);
    		MultiFieldQueryParser parser = new MultiFieldQueryParser( new String[]{"nom"},
    		  new FrenchAnalyzer());
    		Query query = parser.parse( keywords );
     
            FullTextQuery hibQuery = fullTextEntityManager.createFullTextQuery( query,ZicoV.class,ZpsV.class,Znieff2V.class,ZonHumideV.class, Znieff1V.class, Section.class);
             List<KeyProvider> result=hibQuery.getResultList();
             ArrayList<String> keys = new ArrayList<String>();
     
             for (KeyProvider keyProvider : result)
    		{
    			keys.add(keyProvider.getKey());
     
     
    		}
             return keys.toArray(new String[keys.size()]);
     
    	}
     
    }
    merci d'avance pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu dois mettre dans tes tests tous les comportement attendus de ta méthode. Ainsi, si elle doit renvoyer une liste vide quand il n'y a rien, tu fait un recherche dont tu sais pertinement qu'elle ne donnera rien et tu vérifie que t'as bien une liste de longuieur 0 (et pas null). Ensuite tu fait une recherche sur des éléments dont tu connais le résultat de recherche et tu vérifie bien que la liste correspond à ce que tu attends, etc. Toi seul connais le comportement attendu de la méthode.

    Note que dans les méthodes agile, on recommande d'écrire le test avant meme d'implémenter la fonction ou d'améliorer son implémentation Ca permet de définir à la bae ce que tu veux qu'elle fasse

  3. #3
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    Avec un test unitaire tu verifie le bon fonctionnement de ce que tu as écris, du style pointeur null, mauvais paramètre, les cas limites, tu ne verifie pas les conditions fonctionnelles.

    Pour une addition tu vas vérifier que tu as prit en compte le passage de paramètres vide/null/negatif... mais pas que 2 + 2 font 4.

    Donc dans ton cas tu vas vérifier le comportement quand keyword est null/vide, pareil pour result, que ton exception est bien lancée quand il faut.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par nicocsgamer Voir le message
    mais pas que 2 + 2 font 4
    Ha ben justement si, ok c'est un truc "de base" , mais si tu vérifie pas ce genre de chose, alors la fonction soustraction(x,y) réussira tous les tests destinés à addition. Tu dois bel et bien tester d'abord les comportements de base de ta méthode, ensuite vérifier son comportement sur les cas singuliers, et toujours faire une triangulation (pour éviter que tes tests de fonctionnement ne réussissent 'que' sur des valeurs particulières).

    Exemple, tester que 2+2 = 4, que 69+69 = 138.
    Pour tester des singularités, tester 1+0, 0+1, null+5, 5+null

  5. #5
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    Dans ce que tu viens de citer tu peux faire deux categories : cas limites et normaux.

    Pour moi normaux -> fonctionnels. (equipe d'integration)
    Limites -> unitaires.(developpeurs)

  6. #6
    Membre du Club Avatar de maysam
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 112
    Points : 60
    Points
    60
    Par défaut
    merci pour vos reponse
    On donne toujours l'exemple d'addition qui très facile à comprendre et à faire mais dans mon cas la methode que je dois tester renvoie un tableau de string, ce tableau change selon le paramètre de la méthode et il peu être vide si le mot recherché (le param de la methode) n'est pas trouvé.
    je ne vois pas vraiment ce que je peu faire avec des assert dans ce cas la ?

  7. #7
    Membre du Club Avatar de maysam
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 112
    Points : 60
    Points
    60
    Par défaut
    j'ai essaayé de faire une classe de test qui cherche un mot qui existe:
    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
    public class SearchBeanTest extends TestCase{	
    	private SearchBean searchBean=null ;
    	public SearchBeanTest(String arg0) {
            super(arg0);
        }	
    	@Before 
    	protected void setUp() throws Exception {
            super.setUp();
            searchBean = new SearchBean();
        }
        @After
        protected void tearDown() throws Exception {
            super.tearDown();
            searchBean = null;
        }
        @Test 
        public void testSearch(String key){		
    		try {
    			assertFalse(searchBean.search("marais")==null) ;			
    		} 
    		catch (ParseException e) {			
    			e.printStackTrace();
    		}		
    	}
     
        public static void main (String[] args) {
    		   TestRunner.run(SearchBeanTest.class);
    		//org.junit.runner.JUnitCore.main("junitfaq.SearchBeanTest");
    	}	
     }
    quand je l'exécute j'ai l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    junit.framework.AssertionFailedError: No tests found in SearchBeanTest

  8. #8
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    En même temps si tu lis pas les réponses, je t'ai dit quoi tester pour ta méthode en plus de celle de l'addition.

    A la place de marais si tu met 0/null/-1/""/" " il se passe quoi ?

    Si c'est rouge c'est pas bon !

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void testSearch(String key)
    Les méthodes de test ne prennent pas de paramètre, elle doivent donc avoir la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public void testSearch ()
    Le message d'erreur que t'as eu indique qu'il n'a trouvé aucun test a lancer

  10. #10
    Membre du Club Avatar de maysam
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 112
    Points : 60
    Points
    60
    Par défaut
    merci
    oui c'était un problème de paramètre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Framework] Autowired ne fonctionne que dans ma classe de tests unitaires
    Par nicknolt dans le forum Spring
    Réponses: 4
    Dernier message: 29/01/2013, 10h18
  2. Que dois-je mettre dans mon slot ?
    Par tckalexon dans le forum Débuter
    Réponses: 5
    Dernier message: 23/05/2011, 12h55
  3. Que peut-on mettre dans la méthode "AfterSessionEnd" ?
    Par Juju54350 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 02/12/2010, 13h27
  4. Transform/Pivot : Que peut on mettre dans le Pivot ?
    Par Mythrandil dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 11/07/2007, 11h06
  5. Réponses: 5
    Dernier message: 19/10/2006, 00h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo