인 텐트 필터가 Android의 ActivityTestRule에서 작동하지 않습니다.

죽음의 천사 908

딥 링크를 허용하는 애플리케이션이 있습니다.

Manifest.xml :

<activity
    android:name=".activities.unsigned.MagicLink"
    android:label="Some test">
    <intent-filter android:label="Test">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="com.myapp" />
    </intent-filter>
</activity>
<activity
        android:name=".activities.unsigned.MainScreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

활동 :

public class MagicLink extends BusAppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        if (intent != null && intent.getAction() != null) {
            Uri data = intent.getData();
            ServicesApi servicesApi = ServicesApi.init(this);
            servicesApi.setSessionId(data.getQueryParameter(HttpRemoteApi.SESSION_ID));
            startActivity(new Intent(this, LoginActivity.class));
        }
    }
}

이것은 사용자가 사용하면 완벽하게 작동합니다. 지금 테스트를 만들고 싶습니다. 그래서 다음과 같이 씁니다.

androidTest :

@RunWith(AndroidJUnit4.class)
@LargeTest
public class LoginTest {
   @Rule
    public final ActivityTestRule<MainScreen> main = new ActivityTestRule<>(MainScreen.class);
    @Test
    public void checkSmth() { 
         clickMagicLink();
         //...
    }

    private void clickMagicLink() {
        String url = "com.myapp://login?session_id="+utils.getSessionId();
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setData(Uri.parse(url));
        main.launchActivity(i);
    }
}

그러나 대신에 시작하는 MagicLink활동을이 일을 시작 MainScreen(인 활동 MAIN). 내가 뭘 잘못 했어?

추신 나는 또한 다음과 같은 것을 보았다 : new ActivityTestRule<>(MainScreen.class,true, false);. 하지만이 생성자를 사용하면 테스트가 시작되지만 Android 앱은 시작되지 않습니다 (에뮬레이터가 시작되지만 앱은 시작되지 않음).

코드 견습생

ActivityTestRule.launchActivity()항상 테스트중인 활동을 시작합니다. 다른 활동을 시작하는 데 사용할 수 없습니다. 이 경우 항상 시작 MainActivity됩니다. Intent매개 변수는 활동에 전달됩니다. 이를 통해 테스트 중에 엑스트라를 보낼 수 있습니다. 인 텐트는 시작할 활동을 선택하는 데 사용 되지 않습니다 .

또한 문서에는

에서 launchActivity 플래그를 사용하여 활동을 수동으로 지연 시작하지 않도록 명시 적으로 요청하지 않는 한이 메서드를 직접 호출하지 마십시오 ActivityTestRule(Class, boolean, boolean).

MagicLink활동 을 테스트 하려면 다음을 사용할 수 있습니다 ActivityTestRule<MagicLink>.

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MagicLinkTest {
    @Rule
    public final ActivityTestRule<MagicLink> main = new ActivityTestRule<>(MainScreen.class, false, false);

    @Test
    public void testMagicLink() {
        String url = "com.myapp://login?session_id="+utils.getSessionId();
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setData(Uri.parse(url));
        main.launchActivity(i);

        // assertions go here
    }
}

사용할 수도 ActivityTestRule<MainScreen>있지만 실제 사용자와 똑같은 동작을 시뮬레이션해야합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

android : pathPattern은 인 텐트 필터 동작에 영향을주지 않습니다.

분류에서Dev

Android : 파일 확장자 인 텐트 필터가 Gmail / 다운로드 앱에서 제대로 작동하지 않습니다.

분류에서Dev

보류중인 인 텐트가 작동하지 않습니다.

분류에서Dev

Android 매니페스트 파일에서 활동의 인 텐트 필터 작업에 공간을 추가하는 방법

분류에서Dev

Java Script를 사용하는 URL의 오픈 인 텐트가 프로덕션에서 작동하지 않습니다.-DeepLink

분류에서Dev

포트란의 "읽기"및 "인쇄"가 터미널에서 작동하지 않습니다.

분류에서Dev

Chrome 시크릿 / Twitter IAB에서 URI 기반 인 텐트 필터가 작동하지 않음

분류에서Dev

TextWatcher의 데이터 바인딩이 Android에서 작동하지 않습니다.

분류에서Dev

ACTION_SENDTO 인 텐트가 탐색 창 조각에서 작동하지 않습니다.

분류에서Dev

인 텐트가 활성화 된 경우에도 guildMemberAdd 이벤트가 작동하지 않습니다. (discord.js)

분류에서Dev

세트의 스마트 포인터에 대해 역 참조가 작동하지 않습니다.

분류에서Dev

Android에서 인 텐트를 사용하여 SMS를 보낸 후 토스트가 표시되지 않습니다.

분류에서Dev

localhost의 동일한 스크립트 PHP가 온라인에서 작동하지 않습니다.

분류에서Dev

onClick 이벤트가 Android에서 작동하지 않습니다.

분류에서Dev

Java에서 바이너리 형식의 바이트를 인쇄합니다. "=="가 작동하지 않습니까?

분류에서Dev

Jersey에서 필터의 동적 바인딩이 하위 리소스에 대해 작동하지 않습니다.

분류에서Dev

인 텐트 필터를 통해 시작하면 앱이 최근 화면에 표시되지 않습니다.

분류에서Dev

Android 위젯, RemoteViews의 인 텐트가 데이터에서 실행되지 않음

분류에서Dev

'nslookup'이 Linux의 여러 네트워크 인터페이스 카드에서 작동하지 않습니다.

분류에서Dev

datalayerlistener가 웨어러블에서 메시지를 수신하지 않음 (인 텐트 필터가 작동하지 않음)

분류에서Dev

네트워크 확인은 Android에서 작동하지만 iOS에서는 작동하지 않습니다.

분류에서Dev

인 텐트를 사용하여 다른 활동에서 가치를 얻는 것은 첫 번째 시도에서 작동하지 않습니다.

분류에서Dev

Discord : 명령 인수의 아포스트로피가 C #에서 작동하지 않습니다.

분류에서Dev

Android 인 텐트 필터에 내 앱이 표시되지 않음

분류에서Dev

c의 배열에 대한 포인터가 작동하지 않습니다.

분류에서Dev

인 텐트의 데이터에 따라 Android에서 다른 활동을 시작하는 방법

분류에서Dev

Auth () :: user ()가 laravel의 다중 인증에서 작동하지 않습니다.

분류에서Dev

포인터에 대한 포인터가 트리 복사 알고리즘에서 작동하지 않습니다.

분류에서Dev

SSL 인증서가 SAN의 IP 주소에서 작동하지 않습니다.

Related 관련 기사

  1. 1

    android : pathPattern은 인 텐트 필터 동작에 영향을주지 않습니다.

  2. 2

    Android : 파일 확장자 인 텐트 필터가 Gmail / 다운로드 앱에서 제대로 작동하지 않습니다.

  3. 3

    보류중인 인 텐트가 작동하지 않습니다.

  4. 4

    Android 매니페스트 파일에서 활동의 인 텐트 필터 작업에 공간을 추가하는 방법

  5. 5

    Java Script를 사용하는 URL의 오픈 인 텐트가 프로덕션에서 작동하지 않습니다.-DeepLink

  6. 6

    포트란의 "읽기"및 "인쇄"가 터미널에서 작동하지 않습니다.

  7. 7

    Chrome 시크릿 / Twitter IAB에서 URI 기반 인 텐트 필터가 작동하지 않음

  8. 8

    TextWatcher의 데이터 바인딩이 Android에서 작동하지 않습니다.

  9. 9

    ACTION_SENDTO 인 텐트가 탐색 창 조각에서 작동하지 않습니다.

  10. 10

    인 텐트가 활성화 된 경우에도 guildMemberAdd 이벤트가 작동하지 않습니다. (discord.js)

  11. 11

    세트의 스마트 포인터에 대해 역 참조가 작동하지 않습니다.

  12. 12

    Android에서 인 텐트를 사용하여 SMS를 보낸 후 토스트가 표시되지 않습니다.

  13. 13

    localhost의 동일한 스크립트 PHP가 온라인에서 작동하지 않습니다.

  14. 14

    onClick 이벤트가 Android에서 작동하지 않습니다.

  15. 15

    Java에서 바이너리 형식의 바이트를 인쇄합니다. "=="가 작동하지 않습니까?

  16. 16

    Jersey에서 필터의 동적 바인딩이 하위 리소스에 대해 작동하지 않습니다.

  17. 17

    인 텐트 필터를 통해 시작하면 앱이 최근 화면에 표시되지 않습니다.

  18. 18

    Android 위젯, RemoteViews의 인 텐트가 데이터에서 실행되지 않음

  19. 19

    'nslookup'이 Linux의 여러 네트워크 인터페이스 카드에서 작동하지 않습니다.

  20. 20

    datalayerlistener가 웨어러블에서 메시지를 수신하지 않음 (인 텐트 필터가 작동하지 않음)

  21. 21

    네트워크 확인은 Android에서 작동하지만 iOS에서는 작동하지 않습니다.

  22. 22

    인 텐트를 사용하여 다른 활동에서 가치를 얻는 것은 첫 번째 시도에서 작동하지 않습니다.

  23. 23

    Discord : 명령 인수의 아포스트로피가 C #에서 작동하지 않습니다.

  24. 24

    Android 인 텐트 필터에 내 앱이 표시되지 않음

  25. 25

    c의 배열에 대한 포인터가 작동하지 않습니다.

  26. 26

    인 텐트의 데이터에 따라 Android에서 다른 활동을 시작하는 방법

  27. 27

    Auth () :: user ()가 laravel의 다중 인증에서 작동하지 않습니다.

  28. 28

    포인터에 대한 포인터가 트리 복사 알고리즘에서 작동하지 않습니다.

  29. 29

    SSL 인증서가 SAN의 IP 주소에서 작동하지 않습니다.

뜨겁다태그

보관