У меня есть приложение, которое принимает deeplink.умышленный фильтр не работает с ActivityTestRule в android
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
). Что я делаю неправильно?
P.s. Я также видел что-то вроде этого: new ActivityTestRule<>(MainScreen.class,true, false);
. Но с этим конструктором мой тестовый старт, но приложение для Android не работает (я имею в виду, что запускается эмулятор, но приложение не работает)
Что мне делать, чтобы начать другое мероприятие? – deathangel908
@ deathangel908 Каков пример использования вашего приложения, которое вы тестируете? –
@ deathangel908 Чтобы проверить 'MagicLink', вы должны использовать' ActivityTestRule '. –