Ich frage mich, was ist die beste Methode, um Ausnahmen in Dunit zu testen. Ich kenne Method-Zeiger in Delphi nicht sehr gut. Gibt es eine Möglichkeit, Argumente an einen Methodenzeiger zu binden, so dass er ohne Argumente aufgerufen werden kann. Im Moment schreibe ich immer eine zusätzliche Methode, die das manuell "bindet". Das wird nervig, wenn der SUT viele Wurftechniken hat.CheckException akzeptiert nur 0-Parameter-Methoden; Wie kann ich testen, dass andere Methoden Ausnahmen auslösen?
// What i did before i knew abput CheckExcepion
procedure MyTest.MyMethod_BadInput_Throws;
var
res: Boolean;
begin
res := false;
try
sut.MyMethod('this is bad');
except
on e : MyExpectedException do:
res := true;
end;
CheckTrue(res);
end;
// What i do now
procedure MyTest.MyMethodWithBadInput;
begin
sut.MyMethod('this is bad');
end;
procedure MyTest.MyMethod_BadInput_Throws;
begin
CheckException(MyMethodWithBadInput, MyExpectedException);
end;
// this would be nice
procedure MyTest.MyMethod_BadInput_Throws;
begin
CheckException(
BindArguments(sut.MyMethod, 'this is bad'), // <-- how to do this
MyExpectedException);
end;
+1 das sieht nach der * richtigen * Möglichkeit aus, dies zu tun; Danke, dass du mir etwas Neues beigebracht hast! –
Oder noch besser, legen Sie einfach die ExpectedException-Eigenschaft in Ihrem Test. –
Vielleicht einen Versuch hinzufügen ... endlich hier? –