プログラミング: 2017年2月アーカイブ

Eclipse 上での Java 開発で、(多分、単体テストで) try {...} catch (SQLException e) {...} の処理を確認したい時。

Query の実行の前にブレークして、Eclipse の「変数」窓で SQL 文を書き換えて(例えばテーブル名などを存在しないものに変更して)エラーを起こす・・・という方法だと SQLSyntaxErrorException が発生して、まあ、それでも SQLException として catch されるのでテスト的には十分だと思うのだが、どうしても SQLException で throw させたいということもあるだろう。

例えば、設計者から「catch SQLException のテストなんだから、エビデンスのログにも SQLSyntaxErrorException じゃなく SQLException って出てなきゃ認めない」みたいな意地悪をされた場合とか(^^;;;;;

となると、「SQLException ってどうやって起こすの?」ってことだよね(^^;

そもそも、JDK6 のJDBC4.0 から、JDBC の返す SQLException は

SQLNonTransientException(一時的でない例外)
SQLDataException (一時的でない例外)データ型の例外
SQLFeatureNotSupportedException (一時的でない例外)サポートされていない時の例外
SQLIntegrityConstraintViolationException (一時的でない例外)制限違反(外部キーの異常など)
SQLInvalidAuthorizationException (一時的でない例外)権限違反
SQLNonTransientConnectionException (一時的でない例外)一時的でない接続例外
SQLSyntaxErrorException (一時的でない例外)SQLの構文例外
SQLTransientException(一時的な例外)
SQLTimeoutException (一時的な例外)SQLタイムアウト
SQLTransactionRollbackException (一時的な例外)ロールバッグ例外
SQLTransientConnectionException (一時的な例外)一時的な接続例外
SQLRecoverableException(回復可能な例外)

このように細分化されたんで、素の「SQLException」って発生しないんじゃないの?

となると強引に SQLException を発生させないといけないわけで、

[ウィンドウ]→[ビューの表示]→[表示] で、VB のイミディエイトウィンドウみたいなの開いて(こんな書き方したら識者の偉い人に怒られる(^^; ちなみに、「コンソール」や「タスク」と同じ窓でタブ切替になるよ)、ここに、

throw new SQLException("UNIT TEST");

って書く。

プログラムの実行を適当なところ(Query の実行直後とか)にブレークさせたら、この throw new SQLException("UNIT TEST"); を選択し、右ボタンメニューから「実行」を選択。
これで、プログラムは SQLException で終了する。

この方法しかないよねえ・・・

このアーカイブについて

このページには、2017年2月以降に書かれたブログ記事のうちプログラミングカテゴリに属しているものが含まれています。

前のアーカイブはプログラミング: 2017年1月です。

次のアーカイブはプログラミング: 2017年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら