Использовать StartExpectingException()
- не лучший способ, если вы хотите протестировать более одного исключения.Чтобы протестировать все возможные случаи в моей процедуре тестирования, вместе с исключениями я использую этот алгоритм:
uses
Dialogs;
procedure MyTest.MyMethod_Test;
begin
// Test for Exceptions
try
MyMethod(MyParam1CreatingException1);
ShowMessage('Error! There should have been exception: Exxx here!');
Check(false);
except on E: Exception do Check(E is ExceptionType1); end; // This exception is OK
try
MyMethod(MyParam2CreatingException2);
ShowMessage('Error! There should have been exception: Exxx here!');
Check(false);
except on E: Exception do Check(E is ExceptionType2); end; // This exception is OK
// ... test other exceptions ...
// Test other parameters
CheckEquals('result1', MyMethod(MyParam1));
CheckEquals('result2', MyMethod(MyParam2));
// ... other tests ...
end;
Причина, по которой я использую ShowMessage('Error! There should be exception: Exxx here!');
вместо предоставленного метода Check(false, 'There should have been an EListError.');
, заключается в том, что в моем случае(Delphi6) Check(boolean, 'Message')
не работает - он не показывает сообщение в случае, если Check находится внутри блока try...except
(не знаю почему).