問題タブ [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.
spring - @RunWithと@ContextConfigurationで注釈が付けられたjUnitテストでSpringコンテキストにアクセスするにはどうすればよいですか?
次のテストクラスがあります
services-test-config.xml
そのような方法の1つでプログラムでアクセスすることは可能ですか?好き:
transactions - Spring Test を使用した DAO 統合テストの自動ロールバックは良い方法ですか?
DAO 統合テスト メソッドに @Transactional のアノテーションを付けた場合、Spring Test は、各テスト メソッドの完了後にデータベースへの変更を喜んでロールバックします。@BeforeClass メソッドを使用してテスト データを 1 回ロードでき、すべてのクリーンアップが処理されるため、これらは非常に便利に思えます。
しかし、コミット中に発生する障害を発見する機会を逃してしまうため、これが良い方法であるかどうか疑問に思います。DAOのdbunit統合テストでトランザクションを使用してクリーンアップを支援することについてのコンセンサスは何ですか??
junit - SpringTestでケースごとに1回DBUnitテストデータをロードする方法
Spring Testは、テストメソッド内でデータベースに加えられた変更をロールバックするのに役立ちます。これは、各テストメソッドの前にテストデータを削除/再ロードするために時間をかける必要がないことを意味します。
ただし、@ BeforeClass Junitアノテーションを使用すると、データローダーが静的になります。ここで検討する質問: jUnitのfixtureSetupを静的にする必要があるのはなぜですか?
データ初期化メソッドが静的である場合は、データ接続メソッドとデータソースを静的にする必要があります。すべてを静的に強制する必要があります。これは機能しません。どの時点で、私は尋ねます-とにかくすべてのテストでテストデータを削除/再ロードする必要があるときに、変更をロールバックするSpringTestの機能は何が良いですか??!?!
unit-testing - SpringTestFrameworkとアノテーションベースの自動配線の問題
Springのテストフレームワークを使用したDAOには、2つの異なる実装を使用したいと思います。
src.main.java
春のテストケース:
src.test.java.base:
そしてここにエラーがあります:
原因:java.lang.IllegalStateException:Beanクラス[jpadao.UserDAO]のアノテーション指定のBean名'userDAO'が、同じ名前およびクラス[jpaadao.UserDAO]の既存の互換性のないBean定義と競合しています。
修飾子を使用して自動配線をオーバーライドしようとしました。例:
そして、テストケースの配線で
しかし、エラーは解決しません。
2つの質問:
- この問題は、アノテーションベースの構成でどのように解決できますか?
- 自動配線と注釈なしでテストを実行するにはどうすればよいですか?
java - JUnitテストはEclipseで合格しますが、MavenSurefireでは失敗します
JUnit4とスプリングテストライブラリを使用していくつかのJUnitテストを作成しました。Eclipse内でテストを実行すると、正常に実行されて合格します。しかし、Mavenを使用して(ビルドプロセス中に)実行すると、失敗してスプリング関連のエラーが発生します。JUnit、Surefire、Springのどれが問題の原因なのかわかりません。これが私のテストコード、スプリング構成、そしてMavenから得た例外です:
PersonServiceTest.java
personservice-test.xml
Mavenでの例外
java - Spring testcontext フレームワークで複数のデータ ソースを使用するにはどうすればよいですか?
アプリケーションを Spring TestContext フレームワークと統合テストしようとしています。いつものように、 を拡張してこれをAbstractTransactionalJUnit4SpringContextTests
行いました。ただし、私のアプリケーションには 3 つの異なるデータ ソース (xDataSource、yDataSource、zdataSource などの名前) があるため、テストを実行しようとするとAbstractTransactionalJUnit4SpringContextTests
、データ ソースの自動配線が機能しません。タイプ別ですが、3つ見つかったので、どれを選択すればよいかわかりません。
Spring TestContext Framework に 3 つのデータ ソースを使用させる方法はありますか? もしそうなら; どうやって?
spring - Bean が null なのはなぜですか?
applicationContext の使用方法を学ぼうとしています。私の目標は、単体テストを使用するときに、モック データ リポジトリを実際のデータ リポジトリに交換することです。私はこれを明示的に行いたくありません。依存性注入でこれを行いたいです。
物事を複雑にする前の簡単なテストとして、単純に applicationContext.xml から Bean を取得しようとしています。私が読んだことから、これはうまくいくはずです:
しかし、私のresultBeanは常にnullです。WebContent/WEB-INF の下にある私の applicationContext.xml は次のとおりです。
では、なぜ私の resultBean は常に null なのですか? 私は間違って何をしましたか?
java - springframework を使用した不十分な JUnit テストには、壊れやすい Thread.sleep() 呼び出しがあります。直し方?
私は最近、重大な JUnit テストの問題を抱えるグループに参加しました。問題の 1 つは 8 分間のテストです。テストにはいくつかのセクションがあります。それぞれが org.springframework.context.ApplicationEventPublisher.publishEvent() に続いてさまざまな時間の Thread.sleep() を呼び出し、条件をテストします。
このアプローチには明らかな問題がいくつかあります。Thread.sleep() 呼び出しのタイミングが脆弱です。
ビジー状態のマシンではテストが失敗することがあります。と
テストが失敗しない場合、テストに非常に時間がかかりすぎます。
これらのイベントが処理されるプールはテストのためにアクセス可能ですか? また、イベント カスケードが停止したかどうかを確認するための呼び出しはありますか?
java - Spring TestContext がロードされる前に @BeforeClass を実行するにはどうすればよいですか?
これは、testNG を使用するプログラマーにとって簡単なことです。私はこのシナリオを持っています
しかし、@BeforeClass の後にスプリング コンテキストをロードする必要があります。II は AbstractTestNGSpringContextTests メソッドをオーバーライドすることを思いつきました:
そして私の方法を作る
しかし、私は得る:
原因: org.testng.TestNGException: org.springframework.test.context.testng.AbstractTestNGSpringContextTests.springTestContextPrepareTestInstance() は、保護された void org.springframework.test.context.testng.AbstractTestNGSpringContextTests.springTestContextBeforeTestClass() に依存することは許可されていません。 lang.Exception
公開することも役に立ちません。動作する方法で実行できる場合は、ここで誰か言及してください:-) testContext を手動でロードできることは知っていますが、それほど派手ではありません。
このように動作しますが、 TestContextManager が表示されないため、 prepareTestInstance() メソッドを呼び出すことができません:
java - すべてのテストクラスにカスタムTestExecutionListenerを設定して、スローされたすべての例外/アサーションのスタックトレースをログに記録できるようにします
ねえ、私はSpringJUnit4ClassRunnerを使用しています。デフォルトでは、TestContextManager.afterTestMethod()は、次のように、非常に短時間(メッセージのみ)にスローされたすべての例外またはアサーションをログに記録します。
testMethod = testDataDriven@DataDrivenAbstractTest, testException = [null]]
プロジェクト内のテストによってスローされたすべての例外をログに記録するカスタムTestExecutionListenerを作成したいと思います。各テストクラスに@TestExecutionListenersアノテーションを付けることを覚えておく必要はありません。
どういうわけかグローバルにそれを行うことができますか?私は正しい方向に進んでいますか?
ありがとう。