Junit4:expected = ExceptionがSPRINGで機能しない

ラビニカム:

予想される例外をテストするために、@ Test(expected = RuntimeException.class)アノテーションを使用しようとしています。私のコードは次のとおりです:

@Test(expected = RuntimeException.class)
    public void testSaveThrowsRuntimeException(){

                    User user = domain.save(null);

    }

そして私の保存方法は次のように簡単です:

public User save(User newUser) { 
         if(newUser == null) { 
            throw new RuntimeException(); 
         }
         //saving code goes here
    }

コードをデバッグした後、コードが期待どおりに例外をスローしているのが見つかりましたが、春のフレームワーククラスの中間のどこかでコードが食べられていました。

私は古い方法で同じことを試しました(catchブロックを試してください)が、その例外をテストでキャッチできず、Junitのrunafterメソッドでテストがエラーをスローし続けます。

org.springframework.transaction.UnexpectedRollbackException: JTA transaction unexpectedly rolled back (maybe due to a timeout); nested exception is javax.transaction.RollbackException
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1031)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:709)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:678)
at org.springframework.test.context.transaction.TransactionalTestExecutionListener$TransactionContext.endTransaction(TransactionalTestExecutionListener.java:504)
at org.springframework.test.context.transaction.TransactionalTestExecutionListener.endTransaction(TransactionalTestExecutionListener.java:277)
at org.springframework.test.context.transaction.TransactionalTestExecutionListener.afterTestMethod(TransactionalTestExecutionListener.java:170)
at org.springframework.test.context.TestContextManager.afterTestMethod(TestContextManager.java:344)
at org.springframework.test.context.junit4.SpringMethodRoadie.runAfters(SpringMethodRoadie.java:307)
at org.springframework.test.context.junit4.SpringMethodRoadie$RunBeforesThenTestThenAfters.run(SpringMethodRoadie.java:338)
at org.springframework.test.context.junit4.SpringMethodRoadie.runWithRepetitions(SpringMethodRoadie.java:217)
at org.springframework.test.context.junit4.SpringMethodRoadie.runTest(SpringMethodRoadie.java:197)
at org.springframework.test.context.junit4.SpringMethodRoadie.run(SpringMethodRoadie.java:143)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:142)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: javax.transaction.RollbackException
at org.objectweb.jotm.TransactionImpl.commit(TransactionImpl.java:245)
at org.objectweb.jotm.Current.commit(Current.java:488)
at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1028)
... 23 more

そして、これは、runtimeExceptionが原因でsaveをスローしているが、それをキャッチしたり、期待された句でテストに合格したりできないためだと確信しています。

誰かが何かがうまくいっていないという考えを持っていますか?

ブレンダンリチャーズ:

ここに私がJunit 4.5で見つけた回避策があります-@Transactionalと@ExpectedExceptionをネストされた関数に分けます。問題は、Springが@Transactionalメソッドの周りに配置したAOPスタッフと関係があるためだと思います。

@Test
@ExpectedException(org.springframework.dao.DataIntegrityViolationException.class)
public void Test10UniqueName()
{
    DoTest10UniqueName();
}

@Transactional
public void DoTest10UniqueName()
{
    final String NAME = "NAME";
    ProductCategoryDAO dao = DAOFactory.getProductCategoryDAO();
    ProductCategory test1 = new ProductCategory();
    test1.setName(NAME);
    ProductCategory test2 = new ProductCategory();
    test2.setName(NAME);
    dao.save(test1);
    dao.save(test2);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

タイプAndroid Junit4 not present exception

分類Dev

How to start Spring Boot server with ClassRule in JUnit4?

分類Dev

JUnit4でassertThatを使用する

分類Dev

JUnit4 Runnerを使用したSpring Testingが別のソリューションを試した後機能しない

分類Dev

Spring WebServiceTemplate の JUnit が機能しない

分類Dev

Junit4でSpring-retry式が失敗する

分類Dev

Spring4でViewResolverが正しく機能しない

分類Dev

Spring 4 @ Transactionalが機能しない

分類Dev

Spring web-mvc4でCookieの設定が機能しない

分類Dev

Spring web-mvc4でCookieの設定が機能しない

分類Dev

Spring JUnit4手動/自動配線のジレンマ

分類Dev

Spring3およびJUnit4(自動配線)

分類Dev

JUnit4はテストを認識しません

分類Dev

JUnit4でのDBアクセスの遅延?

分類Dev

junit4 / testcontainersで@Testcontainers(disabledWithoutDocker = true)の動作を取得する方法

分類Dev

EclipseでJUnit4にアップグレードする

分類Dev

JUnit5はJUnit4と下位互換性がありますか?

分類Dev

junit4がdouble [] sに対してAssert.assertArrayEquals()を持たないのはなぜですか?

分類Dev

Eclipse JUnit4 RunnerがMETA-INF / servicesファイルを取得しないのはなぜですか

分類Dev

Android Studio、Junit4をクラスパスに追加した後でもJunitを解決できない

分類Dev

NavControllerがIonic 4で機能しない

分類Dev

Angular 4でtoggleClass()が機能しない

分類Dev

Junit4 + Spring 2.5:アサートが「NoClassDefFoundError」をスローする

分類Dev

Android上のJUnit 4が機能しないのはなぜですか?

分類Dev

IntelliJで実行されていないJUnit4およびJUnit5テスト

分類Dev

Spring:log4jまたはlogbackでログが機能しない

分類Dev

JUnit4 + Eclipse「起動中に内部エラーが発生しました」

分類Dev

Android Studio 1.1で簡単なJUnit4テストを実行する方法

分類Dev

JUnit4テストの失敗を理解していますか?

Related 関連記事

  1. 1

    タイプAndroid Junit4 not present exception

  2. 2

    How to start Spring Boot server with ClassRule in JUnit4?

  3. 3

    JUnit4でassertThatを使用する

  4. 4

    JUnit4 Runnerを使用したSpring Testingが別のソリューションを試した後機能しない

  5. 5

    Spring WebServiceTemplate の JUnit が機能しない

  6. 6

    Junit4でSpring-retry式が失敗する

  7. 7

    Spring4でViewResolverが正しく機能しない

  8. 8

    Spring 4 @ Transactionalが機能しない

  9. 9

    Spring web-mvc4でCookieの設定が機能しない

  10. 10

    Spring web-mvc4でCookieの設定が機能しない

  11. 11

    Spring JUnit4手動/自動配線のジレンマ

  12. 12

    Spring3およびJUnit4(自動配線)

  13. 13

    JUnit4はテストを認識しません

  14. 14

    JUnit4でのDBアクセスの遅延?

  15. 15

    junit4 / testcontainersで@Testcontainers(disabledWithoutDocker = true)の動作を取得する方法

  16. 16

    EclipseでJUnit4にアップグレードする

  17. 17

    JUnit5はJUnit4と下位互換性がありますか?

  18. 18

    junit4がdouble [] sに対してAssert.assertArrayEquals()を持たないのはなぜですか?

  19. 19

    Eclipse JUnit4 RunnerがMETA-INF / servicesファイルを取得しないのはなぜですか

  20. 20

    Android Studio、Junit4をクラスパスに追加した後でもJunitを解決できない

  21. 21

    NavControllerがIonic 4で機能しない

  22. 22

    Angular 4でtoggleClass()が機能しない

  23. 23

    Junit4 + Spring 2.5:アサートが「NoClassDefFoundError」をスローする

  24. 24

    Android上のJUnit 4が機能しないのはなぜですか?

  25. 25

    IntelliJで実行されていないJUnit4およびJUnit5テスト

  26. 26

    Spring:log4jまたはlogbackでログが機能しない

  27. 27

    JUnit4 + Eclipse「起動中に内部エラーが発生しました」

  28. 28

    Android Studio 1.1で簡単なJUnit4テストを実行する方法

  29. 29

    JUnit4テストの失敗を理解していますか?

ホットタグ

アーカイブ