web-dev-qa-db-ja.com

テスト用のアクティビティを開始

Realm dbを使用したクイズアプリがあります。ユーザーが回答を選択するたびに、ボタンをクリックすると、質問の新しいテキストが表示されます。彼女が私が新しいアクティビティを開始し、正解に基づいてスコアを表示する終わりに達するまでそれはそれです。

毎回all回答を手動で入力することなく、そのアクティビティを(エスプレッソで推測)開始/テストし、各回答の後にボタンをクリックする方法最後に到達しますか?

私が必要なのは、いくつかの模擬データを変数に渡してインテントを作成することですが、エスプレッソでこれに関連するものをどのように見つけることができないのかわかりません

23
t0s

次のようなカスタムインテントを使用して、次のアクティビティを起動できます。

@RunWith(AndroidJUnit4.class)
public class NextActivityTest {

  @Rule
  public ActivityTestRule<NextActivity> activityRule 
     = new ActivityTestRule<>(
        NextActivity.class,
        true,     // initialTouchMode
        false);   // launchActivity. False to customize the intent

  @Test
  public void intent() {
    Intent intent = new Intent();
    intent.putExtra("your_key", "your_value");

    activityRule.launchActivity(intent);

    // Continue with your test
  }
}

完全な例: https://github.com/chiuki/Android-test-demo

ブログ投稿: http://blog.sqisland.com/2015/04/espresso-21-activitytestrule.html

53
chiuki

まず、この質問を参照してください: Android Monkey Runner

次に、これらのガイドを見ることができます: Monkey Runner

Pythonを使用して、ソースの外部でAndroidアクティビティをテストします。そのため、物事をトリガーして、次のような特定のアクティビティにアクセスできます。

#! /usr/bin/env monkeyrunner

from com.Android.monkeyrunner import MonkeyRunner, MonkeyDevice
from random import randint

print "get device"
device = MonkeyRunner.waitForConnection()
package = 'my.packaget'
activity = 'my.package.activity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)

#use commands like device.touch and device.drag to simulate a navigation and open my activity

#with your activity opened start your monkey test
print "start monkey test"
for i in range(1, 1000):
    #here i go emulate only simple touchs, but i can emulate swiper keyevents and more... :D
    device.touch(randint(0, 1000), randint(0, 800), 'DOWN_AND_UP')

print "end monkey test"

保存して実行します:monkeyrunner test.py

1
Abhishek Soni