Hallo zusammen,
kurze Frage bezüglich JUnittesting:
Wie kann ich HashMaps / ArrayLists mit JUnit testen???
kurze Frage bezüglich JUnittesting:
Wie kann ich HashMaps / ArrayLists mit JUnit testen???
public class Recipe {
private String name;
public int neededIng;
public int quantityNec;
public String ingNa;
private List<RecipeIngredient> recipeIngredient;
public void createRecipeAskingUser() {
this.name = IOTools.readLine("Name of the recipe: ");
this.neededIng = IOTools
.readInt("How many different ingredients are necessary? ");
}
public Recipe() {
createRecipeAskingUser();
this.recipeIngredient = new ArrayList<RecipeIngredient>();
}
public int getNeededIng() {
return neededIng;
}
public void addIngredient(RecipeIngredient recipeIngredient) {
this.recipeIngredient.add(recipeIngredient);
}
public String getName() {
return this.name;
}
public int[] getQuantNec() {
int[] getQuantNec = new int[getIngredientsSize()];
for (int i = 0; i < getIngredientsSize(); i++)
getQuantNec[i] = this.recipeIngredient.get(i).getQuantityNec();
return getQuantNec;
}
public int getIngredientsSize() {
return this.recipeIngredient.size();
}
public void print() {
System.out.println("Recipe: " + getName());
for (int i = 0; i < neededIng; i++) {
System.out.println(recipeIngredient.get(i).getIngredient()
.getName()
+ " ["
+ recipeIngredient.get(i).getQuantityNec()
+ "]--> alcoholic?:"
+ recipeIngredient.get(i).getIngredient().isAlcoholic());
}
}
}
public class RecipeIngredient {
private int quantityNec;
private Ingredient ing;
/**
* @return
*/
public int getQuantityNec() {
return quantityNec;
}
/**
* @param quantityNec
*/
public void setQuantityNec(int quantityNec) {
this.quantityNec = quantityNec;
}
/**
* @param ingredient
* @param quantityNec
*/
public void ingredient(Ingredient ingredient, int quantityNec) {
this.ing = ingredient;
setQuantityNec(quantityNec);
}
/**
* @return ing
*/
public Ingredient getIngredient() {
return ing;
}
}
public abstract class Ingredient {
private String name;
private int quantityAv;
private int quantityNec;
boolean alcoholic;
public String getName() {
return name;
}
public int getQuantityAv() {
return quantityAv;
}
public boolean isAlcoholic() {
return alcoholic;
}
public void setAlcoholic(boolean alcoholic) {
this.alcoholic = alcoholic;
}
public void setName(String name) {
this.name = name;
}
public void setQuantityAv(int quantityAv) {
this.quantityAv = quantityAv;
}
@Override
public String toString() {
return this.getName() + " [" + this.getQuantityAv() + "]"
+ " alcoloic: " + isAlcoholic();
}
}
und sowas abartiges wie diese "print()"-methode sollte auch schleunigst aus dem code weginsektiziert werden. Wozu soll so etwas gut sein? Die ist i.Allg. nicht verwendbar und wirft die Ausgaben per Zufall irgendwohin, wohin das System.out. grad zeigt. Tausend millionen Buffer zu basteln und den Standardausgabestrom jedes mal umzubiegen, nur um deine Klasse irgendwo außer als auf der Standardkonsole auszugeben: das ist bekloppt das tut kein gesunder Mensch. Deswegen wird ja auch eine ordentliche toString()-methode vorgeschrieben.meiner Meinung nach in dieser Klasse nichts zu suchen hat. Man sollte User Eingaben von den Daten trennen, was du heir eindeutig nicht tust.
Bei lists wird die normale reihenfolge garantiert. Bei Sets sollte man aber aufpassen, da wird eh alles irgendwie bunt durcheinandergemischt. Aber da es ja ein List ist, ist es ok.A) Die Ausgabe der benötigten Mengen als int[]. Ich bin mir nicht sicher ob eine foreach-Schleife immer dieselbe Reihenfolge garantiert deswegen die Zugriffe über den index.