3

尝试生成一个简单的 ActivityUnitTestCase 来测试我的 Android 代码中的各种片段。

public class MenuFragmentTest extends ActivityUnitTestCase<FragmentAdapter> {
    static {
        FragmentAdapter.setFragmentUnderTest(new MenuFragment());
    }

    public MenuFragmentTest() {
        super(FragmentAdapter.class);
    }

    public void testMenuOptions() {
        System.out.println(getActivity().findViewById(1));
    }
}

我试图用来在应用程序中测试片段的通用 FragmentAdapter:

public class FragmentAdapter extends FragmentActivity {
    static Fragment fragmentUnderTest;

    public static void setFragmentUnderTest(Fragment fragmentUnderTest) {
        FragmentAdapter.fragmentUnderTest = fragmentUnderTest;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout ll = new LinearLayout(this);
        ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        setContentView(ll);

        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(fragmentUnderTest, null);

        fragmentTransaction.commit();
    }
}

成功安装主应用程序后,Android JUnit Test Runner 失败并显示

java.lang.RuntimeException: Could not find test class.  Class: com.XXX.core.MenuFragment

为什么 Test Runner 找不到我正在运行的测试类?

4

1 回答 1

2

显然,测试包的名称确实很重要:

http://developer.android.com/tools/testing/testing_android.html

如果被测应用的包名是 com.mydomain.myapp,那么 Android 工具会将测试包名设置为 com.mydomain.myapp.test

更改包检测 targetPackage 属性不足以让您在与被测活动相同的包中创建测试,即使测试位于单独的测试项目中。

于 2012-11-04T04:07:52.700 回答