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 に答える