0

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

1 回答 1

1

如果我说对了,那么您想要的是:

   try {
      statement.executeUpdate();
   } catch(SQLException e) {
      if (!se.getSQLState().equals("SPECIAL_EXCEPTION") ) {
            fail();
      }
   }
于 2013-01-14T17:06:46.107 回答