6
初めてAndroidアプリケーションを開発していて、CIサーバを設定していました。私のエスプレッソテストは、私のマシンで問題なく動作しますが、次のエスプレッソを使用したエミュレータ画面のロック解除
java.lang.RuntimeExceptionとトラヴィス・エラーアウト:ウィンドウのフォーカスを持っているために、ビュー階層のルートを待っていたと10秒以上のレイアウトを要求されません。
テストを実行する前にエミュレータ画面のロックを解除する必要があるようです。私は必要な権限とsrc/debug
にマニフェストを追加して画面のロックを解除する必要がそうするために:
KeyguardManager mKeyGuardManager = (KeyguardManager) ctx.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardManager.KeyguardLock mLock = mKeyGuardManager.newKeyguardLock(name);
mLock.disableKeyguard();
事は、私はゴミにブロック場合に包まれた上記のコードで自分の活動をしたくないです。エスプレッソテスト自体から画面のロックを解除する方法はありますか?
マイエスプレッソテスト:
@RunWith(AndroidJUnit4.class)
public class EspressoSetupTest {
@Rule
public final ActivityTestRule<WelcomeActivity> activity =
new ActivityTestRule<>(WelcomeActivity.class, true, true);
@Test
public void launchTest() {
onView(withId(R.id.welcome_textView_hello))
.perform(click())
.check(matches(withText("RetroLambda is working")));
}
}
エスプレッソの設定が異なっている。私はコンテキストにアクセスすることができませんし、名前変数は何を保持する必要がありますか? –
私はより明確にするために私の答えを編集しました。アクティビティを使用してシステムサービスを取得することができます。 name変数は単なるタグなので、この目的のために静的なKEYGUARD_SERVICE文字列を使用できます。 – woley
ありがとう!私のエスプレッソのテストクラスは実際には何もサブクラス化していません。 ActivityTestRule.getActivity()を使用してアクティビティのインスタンスを取得していて、@Before setUp()メソッドにコードを入れても、動作しませんでした。 –