6

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

バックグラウンド:

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

4

3 に答える 3

11

確か@Ruleに、1 つのテストで複数のフィールドを持つことができます。ルール適用のデフォルトの順序が何であるか、またはそれが明確に定義されているかどうかさえわかりません。ただし、順序付けが重要な場合はRuleChain 、テスト ケースに複数のルールがある場合にルールを適用する順序を定義できる で制御できます。

Javadoc から...

@Rule
public RuleChain chain = RuleChain
                           .outerRule(new LoggingRule("outer rule")
                           .around(new LoggingRule("middle rule")
                           .around(new LoggingRule("inner rule");
于 2016-02-13T13:01:59.947 に答える
0

私が個人的に推奨するテストに JUnit を使用している場合、同じファイルに複数のルールを含めることはお勧めしません。なぜなら、ルールはテストの単位であり、単体テストを行っているときは、ファイルごとに 1 つのルール。

テストを実行する前に何らかのデータを作成する必要がある場合は、@Before を使用してから、必要な情報をロードする必要があります。詳細については、http: //junit.sourceforge.net/javadoc/org/junit/Before.htmlを参照してください。

複数のクラスに同じデータをロードする必要がある場合は、ロジックを使用してクラスを作成し、そのクラスをテスト クラスで拡張してから、@Before アノテーションを付けたメソッドを作成し、スーパー クラス メソッドを呼び出すことをお勧めします。

それが役立つことを願っています

于 2016-02-12T23:33:20.553 に答える