我正在使用ActivityInstrumentationTestCase2编写测试。
当模拟器打开并且活动可以获得前景时,我的测试工作正常。
当我在手机锁定的情况下开始测试时,不会创建活动。 这似乎“有意义”,因为没有理由加载活动,如果它无法获得前景(手机被锁定!)。但是,在运行测试套件时,这会导致漏报......
这是一个示例测试
public void testSplashscreenRedirectsSomewhereAfterTimeout() throws Exception {
Instrumentation.ActivityMonitor monitor = getInstrumentation().addMonitor(SomeActivity.class.getName(), null, false);
getActivity(); // to make sure that the activity gets launched
Activity activity = monitor.waitForActivityWithTimeout(10000); // waiting for the other activity
assertNotNull("BaselineActivity was not called", activity);
}
当手机被锁定时,getActivity()会返回正确的活动,但永远不会调用它的onCreate()方法。
即使屏幕被锁定,任何方法都可以让测试工作?
答案 0 :(得分:0)
假设您没有创建活动是正确的,为什么不使用KeyGuardManager解锁手机。除非在手机锁定和解锁时必须采取特定操作,或者您正在测试服务,我只需运行“准备测试环境”功能,检查屏幕是否已锁定,解锁它并运行测试。
How to tell if your screen is unlocked。如果没有,则解锁并运行测试。
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
使用以下方法解除密钥保护锁
//Get the current window
Window window = getWindow();
//Add the Flag from the window manager class
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);