2016-06-15 8 views
2

エスプレッソテストでインタースティシャル広告を処理する正しいメカニズムは何ですか?エスプレッソテスト中にインタースティシャル広告を処理する方法(閉じる)

2つのアクティビティ間にインタースティシャル広告があり、両方のアクティビティにまたがるエスプレッソテストを作成したいと思います。

エスプレッソテスト中にインタースティシャル広告を閉じて、2番目のアクティビティのテストを続ける方法はありますか?

エスプレッソインテントを使用して行うことはできますか?

OR

UIAutomatorテストのミックスとエスプレッソがこの問題の唯一の解決策ですか?

enter image description here

+0

これで運がいいですか?私もここにこだわっている。 – Matej

+0

私は、アクティビティ間のライブラリUI(この場合はGoogleのadmob)を含むエスプレッソテストを実行するための簡単な方法はないと思う..私のケースでは、それは無料で支払った味のものだった。私は 'フリー'フレーバー2つのアクティビティの間で、 '支払われた'ものではありません。無料のフレーバの場合は、ユーザーを第2の画面にするいくつかの要素をクリックすると、次の画面のUI要素が表示されるかどうかをテストします。彼らは目に見えるし、テストは失敗する必要がありますし、逆も同様です。これを改善するための提案はありますか? – Droidwala

+1

あなたはUIオートメーションを使用して、それを使ってシステムの戻るボタンを押して、この方法でインタースティシャルを閉じることができます。とにかく、私は時間を押されてから諦めてしまいました。エスプレッソは皮肉なことに、Robotiumよりも私にとっては薄れていることが判明しました。それでは、ちょっとしたカスタムロジックでそれを使いました。 – Matej

答えて

0

あなたのGradleにこのライブラリを追加します。

androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3' 

次に、あなたのエスプレッソのテストであなたの広告が表示された後:

Thread.sleep(5000); // Necessary time you needed to show your ads, for example 5 seconds 

// After that, press back button to go back 
UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 
     mDevice.pressBack(); 

あなたのアプリがSDKレベルでより低い実行されている場合18あなたのテストディレクトリsrc/androidTest/に別のAndroidManifest.xmlファイルを作成し、このコードでテストを実行します。minSdkVersion=18 (UIAutomatorのために必要なAPIレベルである):

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    package="com.monkingme.monkingme" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools"> 

    <uses-sdk 
     android:minSdkVersion="18" 
     tools:overrideLibrary="android.support.test.uiautomator.v18" /> 
</manifest> 
0

私もつい最近問題を抱えていたので、私はちょうどテスト記録が何を見て私の近くに広告を記録するために、エスプレッソテストレコーダーを使用し、それだけで使用しています次

ViewInteraction imageButton = onView(
      allOf(withContentDescription("Interstitial close button"), isDisplayed())); 
    imageButton.perform(click()); 

今の作品が、これは将来のAdMobのlibsのために働くだろうと確かに彼らは、コンテンツの記述を変更した後は動作しません場合、私は知りません。今後の参考のために

、私が使用しているバージョン11.0.4広告ライブラリー:

freeCompile 'com.google.android.gms:play-services-ads:11.0.4' 
0

エスプレッソテスト中にインタースティシャル広告に対処するための正しいメカニズムは何ですか?

2つのアクティビティ間にインタースティシャル広告があり、両方のアクティビティにまたがるエスプレッソテストを作成したいと思います。

エスプレッソテスト中にインタースティシャル広告を閉じて、2番目のアクティビティのテストを続ける方法はありますか?

IMOの場合、複数のアクティビティにまたがる必要がないように、テストを設定することをお勧めします。

テストは集中して分離する必要があります。トランジションポイントに論理的な分離があるため、動作をアサートするためにアクティビティをスパンする必要はありません。したがって、「アクティビティAのxを実行すると状態yでアクティビティBを開き、アクティビティBでzを実行する必要があります」というテストを書く代わりに、複数のテストを書く:

1)アクティビティAは、インテントAPIで簡単に確認できるアクティビティB "(UIの状態や広告は気にしません)を開く予定です。

2)「アクティビティBをAからBへの遷移から期待している状態で起動する」は、アクティビティルールにインテントを渡すことで簡単に設定できるy状態に初期化する必要がありますUI上のマッチャーを使用します。

3)「状態yで起動したときにアクティビティBでzを実行する必要があります。」(2)のようにアクティビティを開始することで簡単に確認できます。

希望に役立ちます。

関連する問題