最近書いたAdaコードの単体テストを書き込もうとしていますが、例外が発生することが予想される特定のケースがあります(コードが正しく機能した場合は機能しませんが、この場合はテストのみを行います、コードを記述していません)。テストルーチンで例外を処理すると、その手順でテストを続行する方法がわかりません。
IE(これは非常に例であり、コンパイル可能なコードではありません)
procedure Test_Function is
begin
from -20 to 20
Result := SQRT(i);
if Result = (Expected) then
print "Passed";
end_if;
exception:
print "FAILED";
end Test_Function
私の最初の考えは、実際に呼び出しを実行し、それを介して例外が返される「より深い関数」があるかどうかです。
IE(これは非常に例であり、コンパイル可能なコードではありません)
procedure Test_Function is
begin
from -20 to 20
Result := my_SQRT(i);
if Result = (Expected) then
print "Passed";
end_if;
exception:
print "FAILED";
end Test_Function
function my_SQRT(integer) return Integer is
begin
return SQRT(i);
exception:
return -1;
end my_SQRT;
そして理論的には、それが機能することを期待しています。test_functionが実際のテストを実行することが期待される場合、サブ関数を記述し続ける必要はありません。
ラッパー関数を記述してそれを呼び出すのではなく、例外IN Test_Functionをヒットした後、実行を続行する方法はありますか?または、この種のシナリオを処理するためのより簡単でより良い方法はありますか?
*貧弱なコード例で申し訳ありませんが、そうでない場合はコードを書き直しますが、アイデアは明確でなければならないと思います。