2014-06-30 3 views
2

ActivityUnitTestCase를 확장하는 일부 단위 테스트가있는 프로젝트가 있지만 ActionBar를 사용하기 위해 android-support-v7-appcomapt 프로젝트 라이브러리를 설치하면 이러한 테스트가 작동하지 않습니다. 나는 또한 ActivityInstrumentationTestCase2 테스트를 가지고 있으며 제대로 작동하고있다. 내가 startActivity를 호출하지 않으면이 내 설정AppCompat 프로젝트 라이브러리가있는 Android 장치 테스트

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

    Intent intent = new Intent(getInstrumentation().getTargetContext(), MyActivity.class);    

    startActivity(intent, null, null); // The exception happens here 
    veActivity = getActivity(); 

    //getInstrumentation().callActivityOnStart(veActivity); 
} 

입니다 veActivity은 null입니다.

java.lang.IllegalArgumentException: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{mypackage/mypackage.MyActivity} 
at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:282) 
at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:116) 
at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:57) 
at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98) 
at sysnetlab.android.sdc.ui.ViewExperimentActivity.onCreate(ViewExperimentActivity.java:36) 
at android.app.Activity.performCreate(Activity.java:5231) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
at android.test.ActivityUnitTestCase.startActivity(ActivityUnitTestCase.java:158) 
at sysnetlab.android.sdc.test.myActivityTests.setUp(MyActivityTests.java:34) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701) 
Caused by: android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{mypackage/mypackage.MyActivity} 
at android.app.ApplicationPackageManager.getActivityInfo(ApplicationPackageManager.java:242) 
at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:298) 
at android.support.v4.app.NavUtils.getParentActivityName(NavUtils.java:279) 
... 17 more 

많은 제안을 StackOverflow에서 찾았으며 대부분이 나를이 예외로 안내합니다.

android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{mypackage/mypackage.MyActivity} 
+0

이 문제에 대한 해결책을 찾았습니까? –

+0

아직 해결할 수 없을 때까지 ActivityInstrumentationTestCase2에서만 작업하고 있습니다. 나는 이것에 관해 더 빨리 일할 것이다. – dinhokz

+0

해결책을 찾았습니다. @EmreDirican. – dinhokz

답변

3

launchActivity를 사용하고 작업 시작이 완료되었는지 확인하는 해결 방법이 작성되었습니다. 수동으로 테마를 설정하고 유휴 동기화를 기다리는 활동을 시작하고 테스트가 끝난 후 활동을 마칩니다.

Context context = getInstrumentation().getTargetContext(); 
context.setTheme(R.style.Theme_AppCompat); 
mActivity = launchActivity(context.getPackageName(), 
    MyActivity.class, null); 
getInstrumentation().waitForIdleSync(); 

// YOUR TESTS 
// assertNotNull("The activity cannot be null.", mActivity); 

sendKeys(KeyEvent.KEYCODE_BACK); 
mActivity.finish(); 
0

나는 당신의 실수라고 생각합니다 :

startActivity(intent, null, null); // The exception happens here 

당신은 사용해야합니다 : 당신이 당신의 활동을 시작하는 것보다 당신은 지정하지 않아도

setActivityIntent(intent); 

자동으로 수행됩니다.

+1

'setActivityIntent'가 'ActivityUnitTestCase'의 멤버가 아니기 때문에 작동하지 않습니다. –