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
je vs mets la classe, methode et le test
java.lang.Error: Unresolved compilation problem:
The method f05AfficherStocks(Medicament[]) in the type Pharmacie is not applicable for the arguments (int)
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 jmiven . Évalué à 3.
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 Guillaume Smet (site web personnel) . Évalué à 4.
Ta méthode est
f05AfficherStocks(Medicament[] p_tabMeds)
et tu lui passesmeds[0].getStock()
. Tu devrais lui passermeds
.Par ailleurs, si j'étais toi, j'utiliserais des
List
(uneArrayList
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 doulibaga . Évalué à 0.
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 Anonyme . Évalué à 1. Dernière modification le 25 mai 2022 à 08:09.
Ce commentaire a été supprimé par l’équipe de modération.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.