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 : Tests unitaires

Simbra
Simbra
Niveau 18
17 mai 2014 à 16:30:52

Bonjour à tous et à toutes !

Je viens de terminer mon projet de COO qui consistait à faire du traitement d'images du type JPEG, PNG et texte.

En fait je n'ai pas tout terminé puisqu'il me reste les tests unitaires ... N'en n'ayant jamais réellement fait en cours, je me suis documenté là dessus et je comprends bien leurs fonctionnements sur des méthodes simples (arithmétiques par exemple).

Cependant, dans le cadre des méthodes de mon projet, je vois pas du tout comment les coder.
Par exemple, j'aimerai tester si ma méthode qui lis un fichier JPEG ou PNG grâce à IOImage fonctionne avec un test unitaire. Comment m'y prendre ? Dois-je crée une image test ? Mais dans ce cas, son chemin est vrai sur mon ordi, mais si le projet est fourni a quelqu'un d'autre ça ne marchera plus ...

Même problème sur les méthodes de filtrage qui agissent sur des BufferedImage, je sais pas comment je pourrai coder un test unitaire à ce propos.

Merci à celui ou celle qui pourrait m'éclairer !

dark_drow
dark_drow
Niveau 15
17 mai 2014 à 17:38:08

Si tu fournis ton programme avec les tests inclus, tu peux/dois fournir ton image de test avec.

Simbra
Simbra
Niveau 18
17 mai 2014 à 17:50:11

Ok !

Mais donc admettons que j'instancie un File dont je donne la direction (qui est donc mon image de test), et que je lui applique sa méthode d'écriture qui la convertit en BufferedImage :

Comment puis-je la comparer à la BufferedImage "théorique" ? Comment déjà avoir accès à celle-ci ?

Merci de ta réponse en tout cas !

_skip
_skip
Niveau 10
17 mai 2014 à 20:44:25

Tu peux aussi stocker les images dans le classpath et les charger avec un getResource (qui retourne une URL utilisable dans un File). Ca a l'avantage de garder les tests unitaires strictement indépendants du working directory.

Par contre pour ton test, faudrait expliquer mieux ce que tu veux tester exactement.

Simbra
Simbra
Niveau 18
17 mai 2014 à 20:56:40

Merci _skip !

BufferedImage image;
BufferedImage imagetheorique;

public void test() throws IOException {

boolean boo = true;

File file = new File("/Users/Simbra/Desktop/Images/LionTest.jpg");

Jpeg jpeg = new Jpeg();
image = jpeg.lecture(file, null, image);
imagetheorique = ImageIO.read(file);
if(image.equals(imagetheorique)){boo=true;}
else{boo=false;}

assertTrue(boo);

}

J'ai écrit ça mais il me retourne faux ... Et j'ai compris pourquoi, pour lui image et imagetheorique ne seront jamais égaux, même en écrivant image=ImageIO.read(file);
Ca doit être un pb de pointage de référence mais je ne sais pas trop comment m'en sortir et comparer correctement ces deux objets ...
Quelqu'un aurait-il une idée ? Merci !

Simbra
Simbra
Niveau 18
17 mai 2014 à 21:17:54

C'est bon j'ai compris ! equals ne compare que les références (qui ici ne sont pas les bonnes).

Du coup, j'ai fais une méthode bufferedimageequals qui compare un à un les pixels pour comparer deux BufferedImage !

Et ça marche !

Merci à tous en tout cas !

_skip
_skip
Niveau 10
19 mai 2014 à 14:29:48

Avec cette méthode: BufferedImage.getRaster().getDataBuffer()?

Genre tu as extrait un buffer correspondant au raster de chaque image et tu compares byte par byte?
Je me demande s'il existe un moyen plus simple...

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