1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.compatibility.common.tradefed.testtype; 18 19 import com.android.ddmlib.IDevice; 20 import com.android.ddmlib.testrunner.RemoteAndroidTestRunner; 21 import com.android.ddmlib.testrunner.TestIdentifier; 22 import com.android.tradefed.build.IBuildInfo; 23 import com.android.tradefed.device.ITestDevice; 24 import com.android.tradefed.result.CollectingTestListener; 25 import com.android.tradefed.result.ITestInvocationListener; 26 import com.android.tradefed.result.JUnit4ResultForwarder; 27 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner; 28 import com.android.tradefed.testtype.IAbi; 29 import com.android.tradefed.testtype.IAbiReceiver; 30 import com.android.tradefed.testtype.IBuildReceiver; 31 import com.android.tradefed.testtype.IDeviceTest; 32 33 import junit.framework.TestCase; 34 35 import org.easymock.EasyMock; 36 37 import org.junit.runner.JUnitCore; 38 import org.junit.runner.Request; 39 import org.junit.runner.Runner; 40 import org.junit.runner.RunWith; 41 import org.junit.Test; 42 43 import java.util.Collections; 44 45 /** 46 * Tests for the CompatibilityHostTestBase class. 47 */ 48 public class CompatibilityHostTestBaseTest extends TestCase { 49 50 private static final String DEVICE_TEST_PKG = "com.android.foo"; 51 52 @RunWith(DeviceJUnit4ClassRunner.class) 53 public static class MockTest extends CompatibilityHostTestBase { 54 55 @Test 56 public void testRunDeviceTests() throws Exception { 57 runDeviceTests(DEVICE_TEST_PKG, null, null); 58 } 59 60 } 61 62 public void testRunMockDeviceTests() throws Exception { 63 final TestIdentifier testRunDeviceTests = 64 new TestIdentifier(MockTest.class.getName(), "testRunDeviceTests"); 65 66 ITestInvocationListener listener = EasyMock.createMock(ITestInvocationListener.class); 67 ITestDevice device = EasyMock.createMock(ITestDevice.class); 68 69 listener.testStarted(testRunDeviceTests); 70 EasyMock.expect(device.getIDevice()).andReturn(EasyMock.createMock(IDevice.class)).once(); 71 EasyMock.expect(device.runInstrumentationTests((RemoteAndroidTestRunner) 72 EasyMock.anyObject(), (CollectingTestListener) EasyMock.anyObject())).andReturn( 73 true).once(); 74 listener.testEnded(testRunDeviceTests, Collections.emptyMap()); 75 EasyMock.replay(listener, device); 76 77 JUnitCore runnerCore = new JUnitCore(); 78 runnerCore.addListener(new JUnit4ResultForwarder(listener)); 79 Runner checkRunner = Request.aClass(MockTest.class).getRunner(); 80 ((IDeviceTest) checkRunner).setDevice(device); 81 ((IBuildReceiver) checkRunner).setBuild(EasyMock.createMock(IBuildInfo.class)); 82 ((IAbiReceiver) checkRunner).setAbi(EasyMock.createMock(IAbi.class)); 83 runnerCore.run(checkRunner); 84 EasyMock.verify(listener, device); 85 } 86 87 } 88