我需要为(在我的应用程序中)与多个 TextView 一起使用的类编写测试。通常,该类在构造函数中获取父 Activity 和视图资源 id,然后通过调用加载 TextViews 和其他一些控件findViewById
。它使用不同的 id 和父活动多次重复使用。
这是一个应用程序测试,存在描述 GUI 的 xml 文件,并且视图 ID 可用作 R.id.* 。但是现在如何从我无法访问的测试用例中加载它们Activity
?
我试过了AndroidTestCase
,它确实提供了访问权限,Context
但这似乎不足以通过 id 加载/访问/解析 GUI 组件。然后我尝试ApplicationTestCase
了但是它的方法很少Application
,并且可以通过它获得的实例也没有明显的方式通过id访问GUI组件。
问题:
在 JUnit 测试中,我能否获得一个与我使用的 idTextView
相同的实例?如果可以,怎么做?R.id.myView
Activity.findViewById(R.id.myView)
我试过了:
public void testIpSection() {
Activity act = new Activity();
act.setContentView(R.layout.testlayout); // NPE thrown
FragmentManager fm = act.getFragmentManager();
FSetup setup = (FSetup) fm.findFragmentById(R.id.test_setup);
IPSection secs = new IPSection(setup, R.id.sbA0, R.id.sbA1, R.id.sbA2);
}
和
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/test_setup"
android:name="com.spectraseis.fo4.qcdownload.FSetup"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
</fragment>
但是我在测试的第二行抛出了 android.app.Activity.setContentView(Activity.java:1867) 处的 NPE。可能 Activity 不能像那样实例化。如何正确执行此操作?