Ich habe eine Java-Klasse voller void-Methoden, und ich möchte einige Unit-Test machen, um maximale Code-Abdeckung zu bekommen.JUNIT Tests void Methoden
Zum Beispiel habe ich diese Methode:
protected static void checkifValidElements(int arg1, int arg2) {
method1(arg1);
method2(arg1);
method3(arg1, arg2);
method4(arg1, arg2);
method5(arg1);
method6(arg2);
method7();
}
Sein schlecht für einen Grund genannt, weil ich den Code für ein besseres Verständnis übersetzt. Jede Methode überprüft, ob die Argumente in irgendeiner Weise gültig und gut geschrieben sind.
Beispiel:
private static void method1(arg1) {
if (arg1.indexOf("$") == -1) {
//Add an error message
ErrorFile.errorMessages.add("There is a dollar sign in the specified parameter");
}
}
My Unit-Test decken die kleinen Methoden in Ordnung, weil ich sie bitten, zu prüfen, ob die Fehlerdatei die Fehlermeldung enthält, aber ich sehe nicht, wie ich meine Methode checkIfValidElements testen können, gibt sie nichts oder nichts ändern. Wenn ich Code-Coverage mit Maven führe, sagt es mir, dass der Unit-Test-Doesent diesen Teil meiner Klasse abdeckt.
Der einzige Weg, ich sehe, ist diese Methode zu ändern, um einen int oder bollean Wert zurückgeben, wie folgt aus:
protected static int checkifValidElements(int arg1, int arg2) {
method1(arg1);
method2(arg1);
method3(arg1, arg2);
method4(arg1, arg2);
method5(arg1);
method6(arg2);
method7();
return 0;
}
Mit dieser Methode ich in der Lage bin eine Assertion zu tun ist gleich, aber es scheint mir, dass es ist zwecklos, dies zu tun. Das Problem ist, dass ich ein paar Klassen habe, die so aussehen und die Testabdeckung meiner Einheit verringern.
Ich verstehe nicht, wie Rückgabetyp einer Methode Abdeckung wirkt. Asserts sind für die Berichterstattung ebenfalls irrelevant. Die einzige Tatsache ist wichtig - führen Sie eine Methode während eines Komponententests aus oder nicht. – kan