問題タブ [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 - Spring3-実際の統合テスト
現在、私は春ベースのアプリケーションに取り組んでいます。アプリケーションの多くの目的のために、いくつかの単体テストがあります。問題は、アプリケーションで実際の統合テストを実行するための解決策が見つからないことです。
例を挙げましょう:
現在のテストでは、特定のコントローラーのリクエストを設定し、それらのコンポーネントをハンドラーに渡します。
しかし、これは実際の統合テストではありません。なぜなら、私が言っているのは、リクエストがあり、myControllerがこのリクエストを処理する必要があるからです。
私が本当にテストしたいのは次のとおりなので、これは問題です。
リクエストがあります。アプリケーションでこのリクエストを処理する必要があります。実行中のアプリケーションと「/customer」スプリングへのリクエストの場合、どのコントローラーが私のリクエストを解決するかをディスパッチするため、コントローラーを指定したくありません。私は、自分がブラウザまたはバックエンドにリクエストを送信する別のクライアントであることをシミュレートしたいと思っています。
私がこれをテストしたい理由は、テストされた機能が「現実の世界」では機能しないにもかかわらず、そうでなければある種のテストに合格するからです。
この例を理解してもらうことができます。この点で、テストは本番環境の実行とは異なります。
パラメータを使用してフォーム内にファイルをアップロードするとします。私のコントローラー機能はこれです:
RequestMethod.PUTを見てください。これは、ファイルをアップロードするためのhtml標準がPOSTであるため、本番ビルドでは機能しません。
私のユニットテストでは、これを行っています:
問題:テストは合格しますが、合格しないはずです。このテストに合格する理由はいくつかあります。まず、リクエストを指定します。リクエストがあるとは言いませんが、代わりにMultipartRequestがあると言わなければなりません。これにより、ディスパッチャサーブレットはisMultipartRequest()などの関数でtrueを返します。本番稼働では、PUTメソッドにマルチパート要求がないため、falseが返されます。さらに、この要求を処理するコントローラーを再度指定します。
他の例もあるかもしれませんが、私が言いたいのは、HTMLプロトコルやその他すべてを含む実際の条件下でアプリケーションをテストする方法はありますか?
どんな助けでも本当にありがたいです!
前もって感謝します
unit-testing - Unitils と Spring TestContext フレームワーク
spring+hibernate Web アプリケーションに使用するテスト フレームワークを考えています。最初は Unitils を見つけてかなり興味を持ちましたが、標準の Spring TestContext フレームワークを見て、疑問を持ち始めました。私は主題にかなり慣れていませんが、これまでのところ私の理解は次のとおりです。
ユニティルの長所:
- EasyMock や DbUnit など、他のさまざまなテスト フレームワークが混在しています。
- フレームワークの上に構築され、休止状態マッピング テストやリフレクション テスト ユーティリティなどの付加価値を提供します。
Spring TestContext フレームワークの長所:
- テスト時に標準のSpringアノテーションを使用できます
- おそらくより大きなユーザーベースとより良いサポートを持っています(Unitilsは基本的に2人によって作成されているように見えるため、これは私の仮定です)
- また、いくつかの Unitils 機能が組み込まれています (リフレクション テスト ユーティリティなど)。
- DbUnit や EasyMock などの Unitils の「より大きな」機能が必要な場合は、通常の DbUnit または EasyMock をソースから直接入手できます。これにより、Unitils がリリースするのを待たずに、常に最新バージョンの DbUnit/EasyMock を使用できます。現在の DbUnit/EasyMock を使用した新しいバージョン
したがって、今のところ、Spring TestContext フレームワークの使用に傾倒しています。これらのフレームワークについてもう少し経験があり、正しい方向に傾くのを手伝ってくれる人はいますか? これらすべてのフレームワークの統合を除いて、Unitils は実際にそれ自体で何を提供しますか?
[編集] Unitils が提供するいくつかの機能について知りました。
- @DataSet アノテーションのような DbUnit のいくつかの改善 (Spring TestContext フレームワークでは、ここで説明されているように、DbUnit で使用する場合は、独自にもう少しコードを記述する必要があるようです: http://blog.zenika.com/index .php?post/2010/02/04/Testing-SQL-queries-with-Spring-and-DbUnit%2C-part-1 )
- テストでデータベースの制約を無効にする機能
Unitils を使い始めるきっかけとなった Unitils に関する素晴らしいプレゼンテーションを次に示し ます。
当分の間、質問を開いたままにします。おそらく誰かが他の考えを思い付くでしょう...
java - Spring3@Autowireのテスト
私は今、1つの苛立たしい問題を抱えています。自動配線が原因でテストが失敗します。
フィールドを自動配線できませんでした:private k.dao.CompanyDao k.dao.CompanyDaoTest.companyDao; ネストされた例外はorg.springframework.beans.factory.NoSuchBeanDefinitionExceptionです:依存関係に一致するタイプ[k.dao.CompanyDao]のBeanが見つかりません:この依存関係のautowire候補として適格な少なくとも1つのBeanが必要です。
@ContextConfigurationが問題になる可能性があると思いますか?
テスト
CompanyDao
CompanyDaoJpa
GenericDao
サーブレット-context.xml
h2 - H2 db 構成を使用した Spring テスト
私は本番環境で Oracle を使用しており、テストには H2 を使用したいと考えています。私は文字が打てます;
私のテーブルとスクリプトは自動的に作成されます。しかし、このデータベースの URL 値を設定できません。(H2-Oracle との互換性のために、URL 部分に ;MODE=Oracle を追加する必要があります)
この目標を達成する方法はありますか?
または、正反対の解決策です。
今回は URL 部分を編集できますが、このデータソースにデフォルトのテスト スクリプト (create および data sql) をロードするにはどうすればよいですか?
jpa-2.0 - Spring-JPA のテスト
Tomcat 6.x 用の Spring (3.1.x)、JSF 2、JPA 2 (Hibernate Provider) を使用して Web アプリケーションを開発しています。DAO クラスをテストしたい。
私のDAOクラスでは:私はこれを行います:
春の設定では;
persistence.xml 内
初めてテストを行うのですが、テストするときに同じ永続化ユニットを使用したくありません。xml データを使用するための dbunit について聞いたことがありますが、テスト中に永続化ユニットを変更する方法がわかりません。私を助けてくれますか、チュートリアルの例を教えてください。
ありがとうございます。
spring - junitテストクラス全体でSpringアプリケーションコンテキストを再利用する
多数のJUnitテストケース(統合テスト)があり、それらは論理的に異なるテストクラスにグループ化されています。
http://static.springsource.org/spring/docs/current/spring-framework-referenceに記載されているように、Springアプリケーションコンテキストをテストクラスごとに1回ロードし、JUnitテストクラスのすべてのテストケースで再利用できます。/html/testing.html
ただし、一連のJUnitテストクラスに対してSpringアプリケーションコンテキストを1回だけロードする方法があるかどうか疑問に思っていました。
FWIWでは、Spring 3.0.5、JUnit 4.5を使用し、Mavenを使用してプロジェクトをビルドします。
java - Apache キャメル テスト
DI には Spring を使用し、ルーティング/メッセージングには Camel を使用しています。さまざまなコンポーネント (パイプライン方式でメッセージを相互にルーティングするコンポーネント) の (JUnit) ユニット テストをセットアップするように依頼されました。
一般的なCamel のテストドキュメントとCamel-Spring のテストドキュメントをざっと見てみると、キャメル エンドポイントを単体テストする好ましい方法は、Spring Test Context Frameworkを使用して、 および sort のようなオブジェクトのサブクラスを使用することAbstractJUnit38SpringContextTests
です。
これらの API の使用経験はまったくありません。したがって、それらは興味深い読み物になりますが、それらを文脈に入れるのは難しいです (しゃれは意図されていません)。
そのため、私が苦労しているいくつかの初期概念があります。
MockEndpoint
1 つには、 、 vs DataSet
、 vsを使用するのが適切なのはいつTest
ですか?
また、Camel-Spring doc (リンクは上にあります) には、次の例が示されています。
私がこの API を理解し始めMockEndpoint
たとしても、上記のコードは名前付きからすべてのメッセージを読み取っているようにmock:foo
見えますが、それらのメッセージがどこから来ているのか (どのようにしてエンドポイントに到達するのか) はわかりません。最初の場所)!
私の 2 番目の質問は、「スタブ」(モック) するエンドポイントを決定するための標準的な方法は何ですか? たとえば、同じ JMS メッセージ キューが、2 つの異なる JAR/WAR 内に存在する 2 つのエンドポイント (1 つはプロデューサー、もう 1 つはコンシューマー) で使用されている場合はどうなるでしょうか? この場合、ProducerComponent
(内にあるproducer.war
) はメッセージを にプッシュする Camel エンドポイントですsomeQueue
。そしてConsumerComponent
( の中に住んでいるconsumer.war
) は、 からメッセージを消費する別の Camel エンドポイントですsomeQueue
。
SO は、両方のコンポーネントの単体テストをどのように編成しますか?
正しい方向への微調整をよろしくお願いします!
spring - @Rollback(false)が@Beforeで動作しないSpringJUnit4ClassRunnerを使用する前に
SpringアプリケーションのJUnitテストで、セットアップメソッドに大量のデータを挿入し、それを使用してテストしたいと思います。ただし、@Before
メソッドに注釈を付けたとしても、メソッドで行われたことはすべて、各テストの後にロールバックされているように見えます。@Rollback(false)
これが私がやろうとしていることの単純化されたバージョンです:
も使用してみまし@BeforeClass
たが、メソッドが静的である必要があり、setterメソッドが呼び出される前に実行される@Autowired
ため、実行時に呼び出す必要のあるサービスにアクセスできません@BeforeClass
。
を使用してみ@PostConstruct
ましたが、トランザクションを使用できるようにすることに問題があります(そして、トランザクションの開始時にのみHibernateセッションを使用できるように設定されています)。奇妙なことに、セッションが利用可能であるように見えましたが、同じセッション内から取得した2つのオブジェクトが等しくなかったため、Hibernateの第1レベルのキャッシュが失敗したか、各操作が別々のセッションで発生していました。@BeforeTransaction
同じ振る舞いを示しているようでした。
hibernate - Spring 3 統合テスト - sessionFactory の初期化例外
春のjunitテストを実行すると、次のエラーメッセージが表示されました:
....
そのエラーメッセージの理由を見つけるのを手伝ってもらえますか? slf4j の依存関係に問題があるようですが、プロジェクトには問題があります。
テストクラス:
春のテスト コンテキスト構成:
DEPENDENCIES (POM.XML からのバージョン) :
java - Mockito Exception - when() には、モックのメソッド呼び出しでなければならない引数が必要です
Mockito と Spring Test フレームワークを使用する非常に単純なテスト ケースがあります。私がする時
この例外が発生します。
さまざまな方法を試しましたが、このエラー メッセージが引き続き表示されます。Mockito で Spring 3.1.0.RELEASE を使用しています。共有して正しい方向に導いてください。