多数のカスタム Android コンポーネントがあり、Espresso を使用してそれらをテストしたいと考えています。Espresso テストが に対して実行されると、単純なクラスをディレクトリActivity
に追加しました。このクラスは、テストの準備が整ったコンポーネントを含むビューをプログラムで作成します。Activity
androidTest
たとえば、MyView
コンポーネントをテストしている場合、Espresso テスト クラスは次のようになります。
public class MyViewTest extends ActivityInstrumentationTestCase2<MyViewTestActivity>
{
private MyViewTestActivity activity;
public MyViewTest()
{
super(MyViewTestActivity.class);
}
@Override
protected void setUp() throws Exception
{
super.setUp();
setActivityInitialTouchMode(false);
// Launches the activity
activity = getActivity();
}
// Ensure that expected items are present
public void testLayout()
{
onView(withId(activity.view.getId())).check(matches(isDisplayed()));
}
}
次のように簡単MyViewTestActivity
に:
public class MyViewTestActivity extends Activity
{
private static final Random RANDOM = new Random();
public LinearLayout layout;
public MyView view;
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
layout = new LinearLayout(this);
layout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
view = new MyView(this);
view.setId(RANDOM.nextInt());
view.setItem("Test text");
layout.addView(view);
setContentView(layout);
}
}
私の問題はActivity
、この場合はテストクラスをMyViewTestActivity
メインに追加して、これを機能させる必要があるように見えることですAndroidManifest.xml
。そうしないとUnable to resolve activity for: Intent...
、テストを実行しようとするとエラーが発生します。ただし、メイン マニフェストにテスト アクティビティが含まれるようになりました。これは悪いことのように思えます。
テストマニフェストには含まれているがメインのものには含まれていないテスト固有のアクティビティを設定するにはどうすればよいですか?
Android用のgradleベースのビルドシステムを使用しています。