2016-06-15 6 views
2

에스프레소 테스트 중 삽입 광고를 처리하는 올바른 메커니즘은 무엇입니까?에스프레소 테스트 중 삽입 광고를 처리하는 방법 (닫히기)

두 활동 사이에 삽입 광고가 있으며 두 가지 활동에 걸쳐 에스프레소 테스트를 작성하고 싶습니다.

에스프레소 테스트 중 삽입 광고를 닫아 두 번째 활동을 계속 테스트 할 수 있습니까?

Espresso-Intents를 사용하여 수행 할 수 있습니까?

또는

UIAutomator 시험의 믹스와 에스프레소가이 문제에 대한 유일한 해결책인가?

enter image description here

+0

행운이 있나요? 나도 여기 붙어있어. – Matej

+0

내 생각에 거기에 행동 사이에 라이브러리 UI (이 경우에는 Google admob)를 포함하는 에스프레소 테스트를 실행하는 직접적인 방법은 없다고 생각합니다. 내 경우에는 자유롭고 유익한 맛이었습니다. 나는 '자유로운'맛의 광고를 표시하는 데 사용되었습니다. 두 가지 액티비티 사이에서 '유료'가 아닌 .. 무료 플레이버의 경우 사용자를 두 번째 화면으로 가져가는 첫 번째 화면에서 요소를 클릭하면 다음 화면의 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

에스프레소 테스트 중에 삽입 광고를 처리 할 수있는 정확한 메커니즘은 무엇입니까?

두 활동 사이에 삽입 광고가 있으며 두 가지 활동에 걸쳐 에스프레소 테스트를 작성하고 싶습니다.

에스프레소 테스트 중 삽입 광고를 닫아 두 번째 활동을 계속 테스트 할 수 있습니까?

IMO를 사용하는 경우 올바른 해결 방법은 테스트를 설정하여 여러 액티비티를 확장 할 필요가 없도록하는 것입니다.

테스트는 집중적이고 고립되어야합니다. 전환 지점에 논리적 구분이 있으므로 활동을 확장하기 위해 활동을 스팬 할 필요가 없습니다.따라서 "활동 A에서 x를 수행하면 상태 y에서 활동 B가 열리고 활동 B에서는 z로이 작업을 수행해야합니다"라는 테스트를 작성하는 대신 여러 테스트를 작성합니다.

1) "x in in 활동 A는 Intents API로 쉽게 확인할 수있는 활동 B "(UI 상태 또는 광고는 신경 쓰지 않음)를 열려고합니다.

2) "의도로부터 의도 한 의도 (A에서 B 로의 전환에서 예상되는 활동)를 B로 시작해야합니다."상태를 활동 상태 규칙에 전달하여 쉽게 설정할 수있는 y 상태로 초기화해야합니다. UI에서 matchers 사용

3) "y로 시작했을 때 활동 B에서 z를하는 것은 이것 또는 그 일을해야합니다", (2)와 같이 활동을 시작하여 쉽게 확인할 수 있습니다.

희망이 있습니다.