解決策は setActivityIntent です。
次のように、テスト対象のアクティビティにインテントを送信することで、テスト プロジェクトを設定できます。
public void setUp() throws Exception {
Intent i = new Intent();
i.putExtra("testLetterz", LETTERS);
setActivityIntent(i);
solo = new Solo(getInstrumentation(), getActivity());
}
そして、次のようにテストを実行します。
@Smoke
public void testCheckOneWord() throws Exception {
for(int i = 0; i < 5; i++) {
int r = -1;
Movable m;
do {
r++;
m = (Movable) solo.getView(Movable.class, r);
} while(!(m.getLetter() == LETTERS.charAt(i)));
int x = m.getPosX();
int y = m.getPosY();
solo.drag(x, 10, y, 10+i*Movable.getDropSize(), 1);
}
solo.clickOnButton("Check");
boolean expected = true;
boolean actual = solo.searchText("2/10");
assertEquals("The test is not found", expected, actual);
}
テスト対象のアクティビティでは、インテントを読み取り、ランダムな文字を含む文字列を返すメソッドを使用しますが、testLetterz が null でない場合は testLetterz を返します。
この例では、文字を含むビューをドロップ ゾーンにドラッグし、それらが単語リストにあるかどうかを確認しました。
ロボティウムを使用しました。