CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JAVA] aide test unitaire

DarkCelestin
DarkCelestin
Niveau 37
06 septembre 2017 à 23:30:25

Bonjour , j'ai un soucis au niveau des test unitaires , j'arrive à les faire en suivant un exemple , mais j'arrive pas du tout à expliquer ce que j'ai fait...

quelqu'un aurait 5 min à me consacrer pour me commenter ces quelques lignes ? merci beaucoup !
@Test public void testRechTitre() { System.out.println("rechTitre"); String trech = "TestTitre"; Livre l = new Livre(trech, "TestIsbn", 25); BiblioModele instance = new BiblioModele(); instance.ajout(l); ArrayList expResult = instance.getCatalogue(); ArrayList result = instance.rechTitre(trech); assertEquals(expResult, result);

Bunyan
Bunyan
Niveau 17
07 septembre 2017 à 09:56:02

Voici :

// Annotation indiquant que c'est un test pour JUnit.
@Test
// Nom du test
public void testRechTitre(){
		// Écriture de "rechTitre" sur la sortie standard
		System.out.println("rechTitre");
		// déclaration d'une variable initialisée à "TestTitre" 
		String trech="TestTitre";
		// Création d'un nouvel objet "livre", avec "TestTitre", "TestIsbn" et 25 comme valeurs
		Livre l=new Livre(trech,"TestIsbn",25);
		// Création d'un objet "BiblioModele"
		BiblioModele instance=new BiblioModele();
		// Ajout d'un livre dans la bibliothèque
		instance.ajout(l);
		// Déclaration d'une variable ArrayList pointant vers le catalogue de l'instance
		ArrayList expResult=instance.getCatalogue();
		// Déclaration d'une variable ArrayList ayant le résultat de la méthode "rechTitre"
		ArrayList result=instance.rechTitre(trech);
		// Assertion d'égalité (sans message, pas bien !)
		assertEquals(expResult,result);
		}

En plus court, ça donne ça :


// Annotation indiquant que c'est un test pour JUnit.
@Test
// Nom du test
public void testRechTitre(){
		// déclaration d'une variable initialisée à "TestTitre"
		String tRech="TestTitre";
		// Création d'un objet "BiblioModele"
		BiblioModele instance=new BiblioModele();
		// Ajout d'un livre dans la bibliothèque
		instance.ajout(new Livre(tRech,"TestIsbn",25));
		// Déclaration d'une variable ArrayList ayant le résultat de la méthode "rechTitre"
		ArrayList result=instance.rechTitre(tRech);
		// Assertion d'égalité (sans message, pas bien !)
		assertEquals(instance.getCatalogue(),result);
		}

Rajoute un second livre dans ta bibliothèque, et observe ton problème :)
Tu tests si ta recherche vaut l'intégralité de ton catalogue. Tu es dans le cas particulier où tu n'as qu'un seul livre dans ta bibliothèque, et c'est celui que tu recherches, donc ça ira, mais c'est un cas particulier.

Pour faire de bons TU, tu dois aussi tester les cas d'erreurs attendus, ainsi que les cas WTF si possible.

DarkCelestin
DarkCelestin
Niveau 37
08 septembre 2017 à 01:38:11

Merci beaucoup ! Tu entendrai quoi par cas wtf ? J ai vraiment du mal avec le principe de test unitaire

Bunyan
Bunyan
Niveau 17
11 septembre 2017 à 13:33:52

Quand tu réalises une fonctionnalité, tu sais ce que tu rentres, ainsi que ce que tu dois sortir.
Partant de là, tu peux obtenir :
- le cas nominal => celui où tout se passe bien
- le(s) cas d'erreur(s) prévisible(s) => tu attends un type d'entrée spécifique, mais tu peux en avoir d'autre
- les cas WTF => l'imprévisible.

Par exemple, tu as une méthode qui prend en entrée un nombre composé de 1 à 4 chiffres sous forme de String pour le mettre sous forme standard pour ton logiciel.
Un truc qui prend "1234" en entrée" et le transforme en "TMA-1234-DDFE".
Ou qui prend "1" et le transforme en "TMA-0001-DDFE".

Cela indique que la chaîne de saisie ne permet pas de saisir plus de 4 caractères.

Tu vas donc réaliser un TU ayant en entrée un nombre de 1 à 3 chiffre (pour vérifier la complétion à 4 chiffres), et un autre avec 4 chiffres (pour bien vérifier qu'il n'est en rien modifié). Tu peux potentiellement étoffer avec des nombres ayant déjà des "leading zeroes".
Ensuite, pour les cas d'erreurs standards, tu vas vérifier que la String que tu reçois n'est bien que composée de chiffres, et que tu lèves bien une exception si ce n'est pas le cas.
Pour le cas WTF enfin, vu que la saisie ne permet pas d'avoir plus de 4 caractères, tu vas créer un TU qui tentes de formater un chiffre de 5 ou plus caractères et voir ce que tu peux faire pour gérer ce cas.

Attention, les cas WTF ne sont pas forcément simples à voir, ni présent à chaque fois. De plus, ceux-ci viennent souvent de problème dit "d'exploitation", c'est à dire de problème étant réellement rencontré par des utilisateurs.

DarkCelestin
DarkCelestin
Niveau 37
12 septembre 2017 à 09:48:01

un grand merci à toi , tu m'as permis de comprendre cette fourberie de test unitaire ^^

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment