Ich studiere für meine ersten Vorstellungsgespräche als Junior Java Developer und im Moment versuche ich, JUnit Testfälle zu lernen. Dies ist ein Beispiel, dem ich begegnet bin, und ich muss sagen, es ist wirklich schwierig für mich (es ist abstrakter Code, also habe ich keine Ahnung, wie ich es testen soll).JUnit Testfälle für benutzerdefinierte Methode
public class JuiceMaker {
public Juice makeJuice(final List<Fruit> fruits) throws RottenFruitException {
for (final Fruit fruit : fruits) {
if (FruitInspector.isFruitRotten(fruit)) {
throw new RottenFruitException(fruit.getName() + “ is rotten. Cannot make juice.”);
}
}
return Juicer.juice(fruits);
}
}
Das einzige Beispiel, das ich mich selbst zu schaffen verwaltet ist dieser:
JuiceMaker jm = new JuiceMaker();
@Test
public void isThrowingException() {
//when
try {
jm.throwsRuntime();
Assert.fail("Expected exception to be thrown");
} catch (RottenFruitException e) {
//then
assertThat(e)
.isInstanceOf(RottenFruitException.class)
.hasMessage((fruit.getName() + " is rotten. Cannot make juice.");
}
}
Irgendwelche Tipps, welche Art von Tests, die ich auf diesem Stück Code ausführen kann? Vielen dank für Deine Hilfe!
Ich denke, Sie sollten diese Frage auf einer anderen Stackoverlfow-Site stellen, wie eine Quellenbewertung. –
Es wäre einfacher, Ihre Frage zu beantworten, wenn Sie den Code für Fruit, FruitInspector, Juicer und abhängig von der Implementation Juice angeben. Außerdem verweisen Sie in Ihrem Testbeispiel auf die Methode "throwsRuntime", die in der JuiceMaker-Klasse nicht definiert ist. Geben Sie daher auch die vollständige Definition dieser Klasse an. Das letzte: In Ihrem Beispiel greifen Sie auf ein Fruchtobjekt zu, aber es ist nicht definiert. – gawi
Ich habe keine Implementierung für diese Methoden. Das ist alles, woran ich arbeiten kann: "In Test-getriebenen Entwicklungstests sollte die Implementierung dokumentiert sowie getestet werden. In diesem Sinne schreiben Sie Tests für diesen Legacy-Code. Dann refactor, um implizite Abhängigkeiten zu entfernen." –