0

我需要为(在我的应用程序中)与多个 TextView 一起使用的类编写测试。通常,该类在构造函数中获取父 Activity 和视图资源 id,然后通过调用加载 TextViews 和其他一些控件findViewById。它使用不同的 id 和父活动多次重复使用。

这是一个应用程序测试,存在描述 GUI 的 xml 文件,并且视图 ID 可用作 R.id.* 。但是现在如何从我无法访问的测试用例中加载它们Activity

我试过了AndroidTestCase,它确实提供了访问权限,Context但这似乎不足以通过 id 加载/访问/解析 GUI 组件。然后我尝试ApplicationTestCase了但是它的方法很少Application,并且可以通过它获得的实例也没有明显的方式通过id访问GUI组件。

问题: 在 JUnit 测试中,我能否获得一个与我使用的 idTextView相同的实例?如果可以,怎么做?R.id.myViewActivity.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 不能像那样实例化。如何正确执行此操作?

4

1 回答 1

1

是的,你不能以这种方式创建活动。有专门的课程来测试活动。阅读此文档并在 ActivityInstrumentationTestCase2/ActivityUnitTestCase/SingleLaunchActivityTestCase 之间进行选择。

于 2013-01-11T12:35:47.820 回答