2017-08-04 26 views
3

私はAndroidアプリケーションのテストを実行するためにEspresso/Kotlinを使用していますが、設定したテストクラスのすべてのテストに対してセットアップを一度実行します。Android Espresso - すべてのテストでセットアップを一度だけ実行する方法

アプリケーションを一度起動するコンパニオンオブジェクトを作成しましたが、それは終了しますが、テストが実行されている間は開いたままになりません。私はそれがアプリケーションを閉じた後、テストクラスのすべてのテストを実行し、アプリケーションを起動することができますどのように

enter image description here

私も次のことを試してみましたが、それはまだ閉じ、その後、一度起動し、その後、テストを実行しようとします: enter image description here

+0

junit4ルール&静セットアップ問題はありません。アクティビティが 'ActvityTestRule'によって破壊された可能性があります。 –

答えて

0

これは仕様によるものです。

このルールは、1つのアクティビティの機能テストを提供します。テスト中のアクティビティは、各テストが@Testでアノテーションされ、@Beforeでアノテーションされたメソッドの前に起動されます。テストが完了し、@Afterで注釈が付けられたすべてのメソッドが終了した後で終了します。テスト中のアクティビティは、ActivityTestRule.getActivity()を呼び出してアクセスできます。

出典:JUnit4 Rules

あなたはカスタムルールを作ることによって、それを回避することができるかもしれません。それ以外の場合は、単一の@Testを作成し、各アサーションをその内部に配置することができます。あなたの一般的なフォーマットを維持するために、アサーションを別々のプライベート関数に入れることができます。例えば

@Test 
fun testLoginPage() { 
    testLoginButtonIsDisplayed() 
    // call other private functions 
} 

private fun testLoginButtonIsDisplayed() { 
    loginPage.loginButton.check(matches(isDisplayed())) 
} 

// add other private functions 
関連する問題