I'm currently setting up unit test to test my camera app where I release the camera handle when the app goes into the background via the onPause callback. As soon as it gets up to the part where I call the onPause method of the activity I'd get:
java.lang.IllegalStateException: System services not available to Activities before onCreate()
at android.app.Activity.getSystemService(Activity.java:4738)
at android.app.Activity.getMultiWindowStyle(Activity.java:4563)
at android.app.Activity.getMultiWindowStyle(Activity.java:4568)
at android.app.Activity.onPause(Activity.java:1366)
at com.ricky.chow.cameraopencv.activity.MainCameraActivity.onPause(MainCameraActivity.java:57)
at android.app.Activity.performPause(Activity.java:5555)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1239)
at com.ricky.chow.cameraopencv.activity.MainCameraActivityTest.tearDownThisActivity(MainCameraActivityTest.java:58)
at com.ricky.chow.cameraopencv.activity.MainCameraActivityTest.testCameraPreviewExists(MainCameraActivityTest.java:78)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
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:1729)
Unit test:
public class MainCameraActivityTest extends ActivityUnitTestCase<MainCameraActivity> {
private Intent mLaunchIntent;
private ImageButton captureButton;
private FrameLayout cameraPreviewView;
private Instrumentation mInstrumentation;
private MainCameraActivity mActivity;
public MainCameraActivityTest(Class<MainCameraActivity> activityClass) {
super(activityClass);
}
public MainCameraActivityTest() {
super(MainCameraActivity.class);
}
private void setUpThisActivity()
{
mLaunchIntent = new Intent(getInstrumentation().getTargetContext(),
MainCameraActivity.class);
mInstrumentation = getInstrumentation();
mActivity = startActivity(mLaunchIntent, null, null);
mInstrumentation.callActivityOnStart(mActivity);
mInstrumentation.callActivityOnResume(mActivity);
captureButton = (ImageButton)mActivity.findViewById(R.id.CaptureButton);
cameraPreviewView = (FrameLayout)mActivity.findViewById(R.id.CameraPreview);
}
private void tearDownThisActivity()
{
mInstrumentation.callActivityOnPause(mActivity);
mInstrumentation.callActivityOnStop(mActivity);
}
public void testCameraPrieviewWorks()
{
setUpThisActivity();
MedianCameraPost mMedianCam = (MedianCameraPost) cameraPreviewView.getChildAt(0);
Assert.assertNotNull(mMedianCam);
Assert.assertEquals(mMedianCam.getVisibility(), View.VISIBLE);
tearDownThisActivity();
}
}
Aucun commentaire:
Enregistrer un commentaire