データベーススキーマテストをsql/plpgsqlからJava/JDBCに移植しています。しかし、ここに私がテストする方法を理解できないテストケースがあります。私が推測できるように、このテストはテーブルに行を挿入しようとし、SPECIAL_EXCEPTIONがスローされることを期待しています。スローされた場合、テストは合格し、他の例外がスローされた場合、または例外がスローされなかった場合、テストは失敗します。だから質問:java.sql.Connection / Statement / ResultSetの観点から、これを正確にテストする方法は?
begin;
do language plpgsql $$
declare
begin
begin
INSERT INTO table (
name,
blah...
) VALUES (
'Test Player ',
blah...
);
exception
when sqlstate 'SPECIAL_EXCEPTION' then
return;
when others then
raise info 'exception SPECIAL_EXCEPTION failed, invalid sqlstate';
raise;
end;
raise exception 'exception SPECIAL_EXCEPTION failed, no error thrown';
end;
$$;
commit;