Forum Programmation.java test unitaire JUnit: mauvais type de donnees

Posté par  . Licence CC By‑SA.
Étiquettes :
0
7
mai
2022

slt,

j'ai dvpé un petit exercice et là j'essaye en plus d'ecrire un test unitaire sur 1 de mes méthodes ms le test me renvoie un

java.lang.Error: Unresolved compilation problem:
The method f05AfficherStocks(Medicament[]) in the type Pharmacie is not applicable for the arguments (int)
je vs mets la classe, methode et le test

    public class Medicament {
    private String nom;
    private double prix;    
    private int stock;
    public Medicament(String p_nom,double p_prix,int p_stock) {
        this.nom = p_nom;
        this.prix = p_prix;
        this.stock = p_stock;
    }
    public String getNom() {
        return nom;
    }
    public void setNom(String nom) {
        this.nom = nom;
    }
    public double getPrix() {
        return prix;
    }
    public void setPrix(double prix) {
        this.prix = prix;
    }
    public int getStock() {
        return stock;
    }
    public void setStock(int stock) {
        this.stock = stock;
    }
    @Override
    public String toString() {
        return ("nom du médicament: "
                + this.getNom()
                + ", prix de ce médicament: "
                + this.prix
                + ", stock de ce médicament: "
                + this.getStock());
    }
}

La methode que je souhaite tester

    public static void f05AfficherStocks(Medicament[] p_tabMeds) {

        System.out.println("f05AfficherStock");
        System.out.println("Etat des stocks des medicaments");

        // boucle pr afficher le stock des medocs
        for (Medicament med:p_tabMeds) {

            System.out.println(med.getNom() + ", " + med.getStock());
        }
    }

et le test qui me pose probleme

    class TestPharmacie {
    public Pharmacie ph01 = new Pharmacie();

    @Test
    public void testF05AfficherStocks() {

        // ACT: Variables

        // creer 2 instances de type Medicament
        Medicament med01 = new Medicament("nomMed01", 1.0, 1);
        Medicament med02 = new Medicament("nomMed02", 2.0, 2);

        // creer 1 tableau de type Client
        Medicament [] meds = new Medicament[2];

        // remplir ce tableau avec les 2 instances
        // de type Client
        meds[0] = med01;
        meds[1] = med02;

        // ARRANGE

        // ASSERT
        assertEquals(1, Pharmacie.f05AfficherStocks(meds[0].getStock()));
    }
    }

C'est la derniere L qui ne passe pas ds ce test.
Ce que je comprends du msg d'erreur:
la methode f05AfficherStock n'a pas le bon type pr son parametre qui est de type Client[]

Hors, je ne vx pas modifier ma methode, mais modifier ma méthode de test. Je ne sais pas quoi mettre ds le predicat d'assertEquals.

Vs pvez me renseigner svp.
En vs remerciant

PS désolé pr les tags,
le MarkDown me pose de gros probleme.

  • # Quelques questions pour te faire avancer

    Posté par  . Évalué à 3 (+2/-0).

    Je pose quelques questions pour essayer de te débloquer (ça a l'air d'être un exercice, donc ça ne serait pas utile de te donner directement la réponse). Cependant tu parles d'un type Client qui n'existe pas dans le code que tu montres, donc il y a peut-être un autre souci derrière :)

    • Quel argument prend la méthode Pharmacie.f05AfficherStocks() (quel est le type de son argument) ?

    • Quel est le type de meds[0].getStock() dans ton test ?

    • Quelle est du coup la bonne variable à passer à Pharmacie.f05AfficherStocks() ?

  • # Tu passes un int au lieu du tableau

    Posté par  (site Web personnel) . Évalué à 3 (+2/-0).

    Ta méthode est f05AfficherStocks(Medicament[] p_tabMeds) et tu lui passes meds[0].getStock(). Tu devrais lui passer meds.

    Par ailleurs, si j'étais toi, j'utiliserais des List (une ArrayList fera très bien l'affaire ici) plutôt que des arrays, c'est un peu moins pénible à manipuler.

    Je te conseille aussi d'utiliser un IDE qui te pointera ces erreurs directement.

  • # qques ameliorations ms... je reste sur ma faim

    Posté par  . Évalué à 0 (+0/-1).

    Slt,

    Merci pr vos reponses.

    Bien, alors… deja j'avais pas de type de retour sur f05AfficherStocks(), j'etais en void et pr tester faut avoir 1 valeur de retour.

    Ensuite

    System.out.println("- " + med[0].getClass().getName());

    Eclipse me renvoie que la valeur est de type Medicament

    Si je passe le tableau en parametre…

    f05DisplayStocks(med);

    (deja mis ds ma fct° main())

    Il me semble qu'on peut modifier le type d'1 int en String, peut on faire de meme depuis un elt d'un tableau vers un int?

    Merci pr vos reponses et l'aide que vs m'apportez.
    Bonne soirée,
    doulibaga

  • # Commentaire supprimé

    Posté par  . Évalué à 1 (+0/-0). Dernière modification le 25/05/22 à 08:09.

    Ce commentaire a été supprimé par l’équipe de modération.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.