我正在将数据库模式测试从 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;