問題タブ [spring-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.
jdbc - 統合テストのためにデータベースの失敗を扇動する
統合テスト(この場合、WebサービスがJDBCと通信している)を実行するとき、結果として生じる石鹸の障害を検査できるように、データベースにエラーをスローさせるにはどうすればよいですか?
私はSpringのTransactionalTestFrameworkを使用しているので、それDROP TABLE whatever;
を破るために単に発行するのは不合理でしょうか?:D
spring - 単体テスト環境での Spring Bean の再定義
アプリケーションの目的でSpringを使用し、単体テストにはSpring Testingフレームワークを使用しています。ただし、小さな問題があります。アプリケーション コードは、クラスパス内の場所 (XML ファイル) のリストから Spring アプリケーション コンテキストをロードします。しかし、単体テストを実行するときは、Spring Bean の一部を本格的な実装クラスではなくモックにする必要があります。さらに、一部の単体テストでは一部の Bean をモックにする必要があり、他の単体テストでは他の Bean をモックにする必要があります。これは、アプリケーションのさまざまなレイヤーをテストしているためです。
これはすべて、アプリケーション コンテキストの特定の Bean を再定義し、必要に応じてコンテキストを更新することを意味します。これを行っている間、1 つ (または複数) の元の XML Bean 定義ファイルにある Bean のごく一部のみを再定義したいと考えています。私はそれを行う簡単な方法を見つけることができません。Spring は単体テストに適したフレームワークであると常に見なされているため、ここで何かが欠けているに違いありません。
それを行う方法はありますか?
ありがとう!
java - Spring 統合テストをさまざまなクラスおよびパッケージに配置する
Spring 統合テストを実行するために AbstractTransactionalSpringContextTests を使用しています。スプリング コンテキストは 1 回だけ読み込まれ、その後すべてのテストが実行されます。テストを多くのクラスとパッケージに含める場合、どうすれば同じことを行うことができますか。
もちろん、Spring コンテキストは、クラスまたはパッケージごとに 1 回ではなく、すべてのテスト (すべてのクラスとパッケージ) に対して 1 回だけロードする必要があります。
spring - Spring コンテキスト テストで構成の場所が見つからない
複数の Spring Bean 定義 xml ファイルにまたがる大規模なアプリケーションがあります。私のテスト スイートでは、FileSystemXmlApplicationContext を使用して必要な XML ファイルを手動でロードし、実行したいテストを実行します。これにより、テストのセットアップ時間が短縮され、本番環境で使用されているのとまったく同じ構成ファイルを使用できるようになります。
今、私は Spring のトランザクショナル テスト基本クラスを使用しようとしています。このクラスは、構成の場所を取り、コンテキストをロードします。なんらかの理由で、アプリケーション コンテキストが作成されるときに、Spring が設定ファイルを見つけることができません。FileSystemXmlApplicationContext を使用して自分で構成をロードするときと同じ作業ディレクトリからテストを実行するため、これは混乱を招きます。すべての構成場所の前に「file:」を追加すると、テストで指定したパスが見つかりますが、構成で定義された Bean によってインポートまたは参照されるファイル (プロパティ ファイルなど) は見つかりません。どうしたんだ?Spring コンテキスト テスト クラスを拡張して、自分でコンテキストを作成した場合と同じように機能するテストを取得できますか?
たとえば、次のようなコンテキストを作成するとうまくいきます。
AbstractTransactionalDataSourceSpringContextTests を拡張すると、以下は services-context.xml を見つけられません。
これは services-context を見つけますが、そこで定義されている PropertyPlaceholderConfigurer はそのプロパティ ファイルを見つけることができません。
spring - DBUnit:障害時にのみ更新する方法は?
私はDBUnitを使用してSpring/Hibernateの永続性をテストしています。
私は抽象的なテストを作成しました:
しかし、テストを実行するたびに、すべてのテストメソッドの前にDBがdataSetを更新します。これは非常に長く、非常に良くないと思います。
失敗した場合にのみリロード/リフレッシュするにはどうすればよいですか?
PS:コードはどれくらい吸いますか?
spring - JMockを使用してJavaで静的変数をモックする方法
SpringApplicationCtxをロードしたい静的変数がクラスにあるユニットテストの問題があります。
このクラスはBeanFactoryから出てこないので、この事実を変更することはできません。
これは問題なく動作しますが、JMockを実行するのは困難です。少なくとも、方法がわからず、SpringCtxが起動したいと思うようになるまでは。単体テストの状況には理想的ではありません。
誰かが知っている回避策はありますか?静的変数を好きなように変更するオプションがあります。
ありがとう。
java - @PathVariable を使用して Spring MVC コントローラーを単体テストする方法は?
次のような単純な注釈付きコントローラーがあります。
そして、次のような単体テストでテストしたい:
問題は、 AnnotationMethodHandlerAdapter.handler() メソッドが例外をスローすることです。
java - SpringJUnit4ClassRunner はテストごとに Bean を初期化しますか?
次のテストは、このテスト Bean が Spring によって 2 回初期化されることを示しています。一度だけであるべきなので、誰かがなぜそうなのか教えてくれることを願っています。テストは次のとおりです。
Bean ファイルは次のとおりです。
出力は次のとおりです。
java - Spring Tests:テストメソッドの実行後にトランザクションがロールバックしない
AbstractTransactionalJUnit4SpringContextTestsのサブクラスを使用して、Weblogic8.1にデプロイされたレガシーアプリケーションの統合テストを作成しようとしています。
私のテストメソッドには次のアノテーションがあります。
テストクラスは、org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBeanタイプのBeanも参照します。これは、weblogicサーバーにデプロイされたEJBをプロキシします。
テストメソッドでこのプロキシBeanのメソッドを順番に呼び出すと、テストの終了時にトランザクションが正しくロールバックされます。
例:
ただし、同じEJBメソッドに対して2つの並列呼び出しを行いたいと思います。したがって、2つの異なるスレッドでメソッドを呼び出し、それらを並行して実行するために、Callableを実装する内部クラスを作成しました。
ただし、これを行うと、ejbメソッドがトランザクションの外部で呼び出されるようになり、何もロールバックされません。
メソッド呼び出しを並行して実行する場合、完全なテストクラスは次のようになります。
このロールバックを作成する方法はありますか?
ご協力いただきありがとうございます。
よろしく、
フィリップ
java - 春のテストでスコープ Bean をリクエストする
アプリでリクエスト スコープ Bean を利用したいと考えています。テストには JUnit4 を使用します。次のようなテストで作成しようとすると:
次の Bean 定義を使用します。
そして私は得る:
そこで、役立つと思われるこのブログを見つけました: http://www.javathinking.com/2009/06/no-scope-registered-for-scope-request_5.html
しかし、Spring 3.0 で廃止されたように見えるAbstractDependencyInjectionSpringContextTestsを使用していることに気付きました。現時点ではSpring 2.5を使用していますが、ドキュメントが示唆するように、このメソッドをAbstractJUnit4SpringContextTestsを使用するように切り替えるのはそれほど難しくないと考えました(ドキュメントは3.8バージョンにリンクしていますが、私は4.4を使用しています)。したがって、テストを変更して AbstractJUnit4SpringContextTests を拡張します...同じメッセージ。同じ問題。そして、オーバーライドしたい prepareTestInstance() メソッドが定義されていません。OK、多分私はそれらの registerScope 呼び出しを別の場所に置きます...だから私はTestExecutionListenersについてもっと読んで、Springパッケージ構造を継承する必要がないので、それがより良いと思います。そこで、テストを次のように変更しました。
カスタムリスナーを作成する必要があると思っていましたが、それを実行したときです。できます!素晴らしいですが、なぜですか?ストックリスナーがリクエストスコープまたはセッションスコープを登録している場所がわかりません。なぜですか? まだ何も言いたいことはありません。これはSpring MVCコードのテストではないかもしれません...