我有许多自定义 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
到 mainAndroidManifest.xml
以使其工作,否则Unable to resolve activity for: Intent...
在尝试运行测试时会收到错误消息。但是我现在在主清单中有测试活动,这似乎是一件坏事。
如何设置测试清单中包含但不是主要的特定于测试的活动?
我正在使用基于 gradle 的 Android 构建系统。