ホワイトボックステストでは、コードの各行を少なくとも1回カバーする必要があります。
@apimodelproperty( "disciple category")@manytoone //件名カテゴリフィールドを空にするように設定@joincolumn(nullable = false)@jsonview({nenyjsonview.class、measurementunitcategoryjsonview.getallbydisciplineid.class})プライベートディスディップラインのディライン;主題を空ではないように設定する前の例を使用すると、2つの状況をテストする必要があります。例外が空である場合の例外は、空でない場合は正常に保存します。
@testpublic void savetest(){logger.debug( "測定カテゴリの新しい単位"); MeasurementUnitcategory emocisementunitcategory = new seasurementunitcategory(); logger.debug( "Test Save"); MeasurementUnitcategoryService.save(seasurementunitcategory);}ここでは、 save方法を呼び出しましたが、 IDE例外をキャッチするように促しませんでしたが、 save方法が例外をスローしないという意味ではありません。チェックされていないRuntimeExceptionまたはその導出された例外を投げることができます。
この例外をテストするために、まずこのコード行を実行して、どのような例外が表示されるかを確認します。
org.springframework.dao.dataintegrityviolationexception:ステートメントを実行できませんでした。 sql [n/a];制約[null];ネストされた例外はorg.hibernate.exception.constraintviolationexception:ステートメントを実行できませんでした
原因:org.hibernate.exception.constraintviolationexception:ステートメントを実行できませんでした
原因:org.h2.jdbc.jdbcsqlexception:null "discipline_id"には許可されていません。 SQLステートメント:
測定に挿入_unit_category(id、discipline_id、is_asc)values(null、?、?)[23502-194]
最初に、このレコードを挿入する際にJdbcSQLException 3つの例外があります。その後、例外がConstraintViolationExceptionを引き起こし、新しい例外がDataIntegrityViolationExceptionを引き起こします。
これCaused byこれは、実際には例外カプセル化です。たとえば、基礎となる層は例外をスローする場合がありますが、通常、比較的高いレベルで例外を処理します。
これを例として考えてみましょう。 DataIntegrityViolationExceptionデータは例外に違反しており、多くのタイプの例外が発生する可能性があるため、この例外の処理方法は同じまたは類似しています。
基礎となるレイヤーがJdbcSQLExceptionをスローし、その方法を呼び出して例外catch 、例外(制限違反の例外)を使用して新しい例外ConstraintViolationException構築し、それを上層にスローし、上層層にキャッチし、新しい例外DataIntegrityViolationExceptionを構築します。私たちはそれを処理しませんでした、そして、コンソールはエラーを報告します。
カプセル化と上向きのスローを維持する利点は、例外を使用して同様の状況を処理できることです。この例外を扱うと、ソースを追跡して、原因の原因を正確に保つことができます。このパッケージが利用できない場合は、エラーを正確に見つけるには、根本的なcatchに直接移動する必要があります。
OK、ここでキャッチする必要がある例外は、アプリケーションによって投げられるDataIntegrityViolationException例外です。
@testpublic void savetest(){logger.debug( "基本テストデータ準備"); MeasurementUnitcategory emocisementunitcategory = new seasurementunitcategory(); boolean catchexception = false; logger.debug( "テスト保存、例外をスローすることを期待する"); try {measurementunitcategoryservice.save(seasurementunitcategory); } catch(datientegrityviolationexception e){catchexception = true; } logger.debug( "キャプチャ例外が真であると主張します"); assertthat(catchexception).istrue();}テストを実行して合格します。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。