gpt4 book ai didi

android - "java.lang.SecurityException:Injecting to another application requires INJECT_EVENTS permission"多个 Activity 工作流测试 android 时出错

转载 作者:行者123 更新时间:2023-11-29 14:17:01 27 4
gpt4 key购买 nike

在我的代码中有 HomeActivity.java。在此 Activity 中,我有 3 个图像按钮,当我单击任何按钮时,它会打开一个带有 intent.putExtra 的新 Activity (ItemListActivity)。

例如:

Intent intent = new Intent(HomeActivity.this, ItemListActivity.class);
intent.putExtra("for", "files");
finish();
startActivity(intent);)**

完整代码如下:

public class HomeActivityTest extends ActivityInstrumentationTestCase2<HomeActivity> {

private HomeActivity homeActivity;
ImageView ivFiles;
ImageView ivForms;
ImageView ivModels;
private static final int TIMEOUT_IN_MS = 5000;
private Intent mLaunchIntent;

public HomeActivityTest() {
super(HomeActivity.class);
}

@Override
protected void setUp() throws Exception {
super.setUp();

try {
/**
* Using ActivityInstrumentationTestCase2
*/

setActivityInitialTouchMode(true);
CommonUtilities.createSharedPreferenceEditor(getInstrumentation().getContext());
homeActivity = getActivity();
ivFiles = (ImageView) homeActivity.findViewById(R.id.ivFilesBtn);
ivForms = (ImageView) homeActivity.findViewById(R.id.ivFormsBtn);
ivModels = (ImageView) homeActivity.findViewById(R.id.ivModelBtn);

assertNotNull("HomeActivity is null", homeActivity);
assertNotNull("File Image is null",ivFiles);
assertNotNull("File Image is null",ivForms);
assertNotNull("File Image is null",ivModels);
} catch (Exception e){
e.printStackTrace();
}
}

@MediumTest
public void testOpenItemListActivity(){

Instrumentation.ActivityMonitor receiverActivityMonitor1 = getInstrumentation()
.addMonitor(ItemListActivity.class.getName(), null, false);

/*
When I click on this ivFiles in HomeActivity, it Opens new ItemListActivity.

Intent intent = new Intent(HomeActivity.this, ItemListActivity.class);
intent.putExtra("for", "files");
finish();
startActivity(intent);
*/
TouchUtils.clickView(this, ivFiles);

ItemListActivity itemListActivity1 = (ItemListActivity) receiverActivityMonitor1
.waitForActivityWithTimeout(TIMEOUT_IN_MS);

assertNotNull("ItemListActivity is null", itemListActivity1);
assertEquals("Monitor for ReceiverActivity has not been called", 1,
receiverActivityMonitor1.getHits());
assertEquals("Activity is of wrong type", ItemListActivity.class,
itemListActivity1.getClass());

assertEquals("Wrong data pass on ivFiles Click", itemListActivity1.dataToOpen, "files");

getInstrumentation().removeMonitor(receiverActivityMonitor1);

receiverActivityMonitor1 = getInstrumentation()
.addMonitor(ItemListActivity.class.getName(), null, false);
/*
When I click on this ivFiles in HomeActivity, it Opens new ItemListActivity.

Intent intent = new Intent(HomeActivity.this, ItemListActivity.class);
intent.putExtra("for", "files");
finish();
startActivity(intent);
*/

TouchUtils.clickView(this, ivModels);

ItemListActivity itemListActivity2 = (ItemListActivity) receiverActivityMonitor1
.waitForActivityWithTimeout(TIMEOUT_IN_MS);

assertNotNull("ItemListActivity is null", itemListActivity2);
assertEquals("Monitor for ReceiverActivity has not been called", 1,
receiverActivityMonitor1.getHits());
assertEquals("Activity is of wrong type", ItemListActivity.class,
itemListActivity1.getClass());

assertEquals("Wrong data pass on ivModels Click", itemListActivity2.dataToOpen, "models");

getInstrumentation().removeMonitor(receiverActivityMonitor1);

}
}

我已经为这个 HomeActivity 写了一个测试用例,它是 HomeActivityTest.java。但是我收到了这个错误:

java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission

那么我应该如何测试这种场景呢?

最佳答案

如果构建服务器上的设备被锁定并且无法访问屏幕,您也可以获得此信息。

关于android - "java.lang.SecurityException:Injecting to another application requires INJECT_EVENTS permission"多个 Activity 工作流测试 android 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31939921/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com