問題タブ [junit-rule]

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.

0 投票する
1 に答える
613 参照

junit - Google api(ディレクトリ api) の使用をテストするための Junit テストケースの書き方

現在、コードは次のように始まります

テストケースの書き方がわからない、またはテストケースを書くべきかさえわかりません。ここにテストケースを書くとはどういう意味ですか。

0 投票する
4 に答える
2381 参照

java - JUnit 4.12 で @Rule と @ClassRule を組み合わせる方法

4.12 リリース ノートによると、テスト クラスの静的メンバーに @Rule と @ClassRule の両方でアノテーションを付けることが可能です。

@Rule と @ClassRule の両方でアノテーションが付けられた静的メンバーが有効と見なされるようになりました。これは、単一のルールを使用して、クラスの前後 (例: 外部リソースのセットアップ/破棄) とテスト間のアクション (例: 外部リソースのリセット) を実行できることを意味します。

この機能を使用して、ファイル内のすべてのテストの開始時にリソースを初期化し、各テストの間にリソースをクリーンアップし、すべてのテストが終了した後にリソースを破棄したいと考えています。このリソースは現在、 ExternalResourceを拡張するクラスによって表されます。

私のbeforeandafterメソッドでは、「すべてのテストの前/後」と「各テストの前/後」をどのように区別できますか? これを実現するには、別の/カスタム実装を使用する必要がありTestRuleますか?

0 投票する
1 に答える
1868 参照

java - テスト中のクラスのプロパティにHamcrestマッチャーを適用する方法は?

オブジェクトとこのオブジェクトのプロパティをテストする組み合わせ Hamcrest マッチャーを構築する方法はありますか? - 擬似コード:

背景: 動的オブジェクトのコレクションを反復処理する JUnit テストがあります。各オブジェクトは、処理時に例外をスローすることが期待されています。例外が収集されます。テストは、これらのスローされた例外のコレクションを含む MultipleFailureException で終了することが期待されます。

0 投票する
1 に答える
32 参照

junit - JUnit の他のテスト ランナーで Burst を使用できない

この興味深い JUnit プロジェクトを見つけました: https://github.com/square/burst

ドキュメントは、クラスランナーでの使用方法のみを指定しています。ただし、JUnit では JUnit ごとに 1 つのランナーしか許可されないため、通常、SpringJUnit4ClassRunner.class や他のクラス ランナーなど、他のクラス ランナーも実行する必要があるため、Burst を使用すると統合テストでの実行が困難になります。ところで、他のクラスランナーも実行する必要があるかもしれないので、私の質問は SpringJUnit4ClassRunner に固有のものではありません。

他のクラスランナーで実行する方法はありますか? たとえば、@Rule を使用していますか?

0 投票する
3 に答える
4547 参照

android - 同じテストで複数の TestRules を使用する

TestRuleAndroid テスト スイートで使用するカスタムを作成しました。テスト対象のアプリが使用するデータベースにテーブルを設定します。DataRuleこれをと一緒に使用する必要がありますActivityTestRule。テスト クラスの 2 つのフィールドに アノテーションを付けることはできます@Ruleか? ルールが適用される順序を制御するにはどうすればよいですか?

バックグラウンド:

Android API は、UI を持つすべてのアプリのコア クラスであるアクティビティを開始するための TestRule を提供します。私のアプリにはデータベースがあり、データベースに既知のデータを事前に入力する必要があるいくつかのテストがあります。以前は、JUnit3 ベースのテストで、抽象的なスーパークラスを使用してデータベースを準備するコードを一元化し、このスーパークラスをさまざまなテスト ケースに拡張していました。現在、JUnit 4 を使用して同じロジックを実装しようとしています。最近、テスト ルールは、テスト間で再利用されるロジックを提供する 1 つの方法であることを知りました。そのため、ロジックをスーパークラスからテスト ルールに移動しようとしています。これは私の目標を達成するための適切な方法ですか?

0 投票する
4 に答える
16561 参照

java - スローされた場合、JUnit ExpectedException の後にテストを続行する方法は?

ExpectedException 機能を使用して JUnit (4.12) テストをセットアップしましたが、予期される例外の後もテストを続行したいと考えています。しかし、例外の後に実行が停止しているように見えるため、ログ「3」は表示されません。

これは実際に可能ですか?

0 投票する
3 に答える
3706 参照

java - NoSQL JUnit @Rule で Spring Data ランダム (埋め込み) Mongo ポートを使用する

現在、Spring Data Mongo リポジトリを使用する統合テスト クラスを作成しようとしています。de.flapdoodle.embed.mongo依存関係によって提供される組み込みの Mongo インスタンスを使用します。Spring Data のドキュメントでは、この依存関係をプロジェクトに配置するだけでよくEmbedMongoAutoConfiguration、残りはすべて処理することが指定されています。

今のところは問題ありません。ポートを に設定する0と、自動構成プロセスが mongo インスタンスを起動するための空きポートを見つけます。

この機能は、他のテスト (私の会社の他のプロジェクトと共に Jenkins CI サーバーで実行される) との衝突を避けるために必要です。

問題が発生しました。各テストメソッドを実行する前に、外部ファイルからテストデータを挿入できるようにしたいと考えています。NoSQL Unit は、単純なメソッド注釈と JUnit を使用してこれを実行できることがわかりました@Rule

次に例を示します。

私の問題は@Rule、基礎となる MongoClient をインスタンス化するためにビルダーで Mongo ポートが必要ですが、@Rule がインスタンス化される時点で、Spring コンテキストが完全に初期化EmbeddedMongoAutoConfigurationされておらず、ポートがまだ公開されていないことです。

私の質問は、Embedded Mongo 機能を NoSQL Unit で使用したことがある人はいますか?たとえば、Spring コンテキストが初期化された@Rule 後に を作成する方法はありますか?

自分で(静的な方法で)空きポートを見つけて、それをに設定し、Bean をオーバーライドして使用するように@Rule指示するのは良い考えかどうか疑問に思っていました。または「より簡単な」方法はありますか?EmbeddedMongoAutoConfigurationIMongodConfig

注:flapdoodleライブラリが、無料のサーバーポートを見つけるためのクラスと静的メソッドを提供し、Springで次のように使用されることを確認しました。

よろしくお願いします!

編集: 先ほど説明した解決策を試してみましたが、うまくいくようですが、まだ少し「冗長」で汚いと思います。

次に、関連する構成クラスで: