問題タブ [spring-mvc-test]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - Spring Junit コントローラのモックが機能しない
次のコントローラーがあり、Junit テストを作成したいのですが、
JUnit メソッドは次のようになります。
principalMock は次のように宣言されます。
問題は、プリンシパルで getName() メソッドを呼び出すと、この行で NullPointerException が発生することです。
spring - 非同期 Spring サービス メソッドを呼び出す Spring MVC コントローラー メソッドの統合テストの問題
次のSpring MVCコントローラーメソッドがあります:
の実装は次のsendPasswordResetInfo
とおりです。
コントローラーメソッドの統合テストを行う方法は次のとおりです。
ここでは将来のオブジェクトがnullであるため、コントローラーメソッドで(テストで)NullPointerExceptionを体系的に取得します。
ただし、アプリを使用すると(テスト外で)コントローラーメソッドは正常に実行されます。
次のように同期タスクエグゼキューターを使用しようとしました(無駄に):
私の質問は次のとおりです。
Future
統合テスト中にオブジェクトが常に null になるのはなぜですか?- 統合テスト中に null でないことを確認するにはどうすればよいですか?
spring-aop - サービス層の AOP xml で構成された spring-mvc-test 自動ロールバック トランザクション
次の Spring MVC アプリ スタックがあります。
コントローラ -> サービス -> DAO (リポジトリ) -> エンティティ -> MySql InnoDB
トランザクションは、AOP xml 構成を使用してサービス層から開始するように構成されており、アプリは完全に機能します。
現在、spring-mvc-test フレームワーク、UnitDB などを使用して Spring MVC テストを作成しています。テスト クラスには次の構成があります。
テストは次のようになります。
基本的に、テスト環境内で既存の Spring AOP 構成をテスト (使用) し、最初にいくつかの DB データをセットアップし、テストを実行し、テストが完了したらすべてをロールバックします。
上記の構成では、テストは独自のトランザクションを開始しています。指定された伝播構成では、AOP xml 構成によって開始されたサービス層で別のトランザクションに遭遇しています。テストによって開始されたトランザクションがによって開始されたトランザクションを待っているため、ロック タイムアウト エラーが発生します。サービス層での AOP 構成。
私はテストを書いているだけで、実際のコードを変更するのではなく、テスト コードのみを変更する必要があります。私の仕事は、指定された構成でテストによって行われたすべての変更をロールバックする方法を見つけることです。
どんなアイデアでも大歓迎です。
編集
問題となるケースは次のとおりです。
- test クラスは、すべてのテストに対して自動ロールバックを使用して 1 つの大きな新しいトランザクションを開始します。
- dbunit はデータベースに初期データを入力します
- test はコントローラのテストを起動します
- コントローラーは、エンティティの保存/更新などのサービス レイヤーを呼び出します (テスト クラスの先頭で DBUnit によって挿入されます)。ここでサービス レイヤーで新しいトランザクションが開始されます (aop:config によって構成されます) が、ステップ #1 からの大きなトランザクションでサポートされます
- ブーム、エラーが発生: ロック待機タイムアウトを超えました。トランザクションを再開してみてください
DBUnit で挿入されたデータは、同じトランザクション内にあるため、まだコミットされていないと思います。別のトランザクションで DBUnit を使用して初期データを挿入する方法を見つける必要がありますが、テストの最後にロールバックします。
spring-test - 遅延コレクションを持つエンティティを含む Spring 統合テストの問題
新しい Spring Security Test フレームワークを試しています。遅延コレクションを含む JPA エンティティを返すテストがあります。
遅延コレクションの 1 つが原因で、次のテストはエラーになります。
エラーメッセージは次のとおりです。
テスト設定で何が間違っていますか? JPA エンティティーマネージャーの閉鎖が早すぎるのはなぜですか? この問題を回避するにはどうすればよいですか?
編集1:
コントローラーからのメソッド:
サービスからのメソッド:
編集2:
@Transactional
次のようにテストメソッドに注釈を付けたにもかかわらず、テストが実際にはエラーになっていることに気付きました。
エラーメッセージは次のとおりです。
編集3:
カリキュラムの関連部分は次のとおりです。
spring - @WebAppConfiguration 春 3.2.x より前
私はたくさんの spring-mvc テストを書いていますが、私は Spring 3.1 を使用しています。ポスト 3.1 へのアップグレードには現在いくつかの問題があるため、現時点では試していません。
私の質問は、私は春のコントローラーテストを持っていますが、テストに WebApplicationContext を挿入しようとしています. この注釈は Spring 3.1 には存在しません。これは 3.2 より前にどのように行われたのですか?
ありがとう!アレッサンドロ・フェルッチ