我在无 UI 片段中有一个业务逻辑,我必须对其进行测试。我尝试了 2 个选项,但都失败了。
1. 使用 AndroidTestCase 并创建模拟活动。
以下代码
@Override
protected void setUp() {
Intent i = new Intent(getTestContext(), TestActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getTestContext().startActivity(i);
}
抛出异常
Permission denied: checkComponentPermission() reqUid=10104
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.xxx.iabsample.test/.TestActivity } from ProcessRecord{40769510 28116:com.xxx.iabsample/10070 (pid=28116, uid=10070) requires null
2. 使用带有模拟活动的 ActivityInstrumentationTestCase2
代码
public class IabTest extends ActivityInstrumentationTestCase2<TestActivity> {
public IabTest() {
super("com.xxx.iabsample.test", TestActivity.class);
}
}
抛出异常
java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.xxx.iabsample/.test.TestActivity }
似乎它试图从测试目标应用程序而不是测试应用程序启动活动。
那么,测试片段的正确方法是什么?