Я думаю, что необходимо протестировать все в "ядре" бизнес-логики. Метод set ответа метода get также, потому что они могли принять отрицательную величину или нулевое значение, которое Вы могли бы сделать не, хочет принять. Если у Вас есть время (всегда зависят Вашего босса), хорошо протестировать другую бизнес-логику и весь контроллер, которые звонят, они возражают (Вы медленно идете от модульного теста до интеграционного теста).
Вы можете проверить, назначены ли ExceptObject или ExceptAddr. В исходнике VCL это делается для экзамена. в GIFImg.pas или jpeg.pas.
Следующий код должен вывести
ExceptObject <> nil
ExceptObject = nil
, и если вы удалите исключение, то, конечно,
ExceptObject = nil
ExceptObject = nil
try
try
raise Exception.Create('Just an exception');
finally
if ExceptObject <> nil then
WriteLn('ExceptObject <> nil')
else
WriteLn('ExceptObject = nil');
end;
except
end;
if ExceptObject <> nil then
WriteLn('ExceptObject <> nil')
else
WriteLn('ExceptObject = nil');
Это своего рода взлом, но вы можете попробовать вызвать AcquireExceptionObject. Если вы находитесь в состоянии исключения, вы получите возвращаемое значение, в противном случае вы получите ноль.
(Если вы его получили, не забудьте потом вызвать ReleaseExceptionObject.)
AFAIK, это может быть достигнуто только с помощью вложенных операторов try:
Try
Try
...
Except
...
End;
Finally
...
End