1bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot/* 2bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * Copyright (C) 2012 The Android Open Source Project 3bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * 4bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * Licensed under the Apache License, Version 2.0 (the "License"); 5bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * you may not use this file except in compliance with the License. 6bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * You may obtain a copy of the License at 7bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * 8bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * http://www.apache.org/licenses/LICENSE-2.0 9bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * 10bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * Unless required by applicable law or agreed to in writing, software 11bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * distributed under the License is distributed on an "AS IS" BASIS, 12bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * See the License for the specific language governing permissions and 14bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * limitations under the License. 15bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot */ 16bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotpackage com.android.test.runner; 17bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 18bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport junit.framework.Assert; 19bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport junit.framework.TestCase; 20bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 21bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport org.junit.Before; 22bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport org.junit.Test; 23bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport org.junit.runner.RunWith; 24bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport org.junit.runners.Parameterized; 25bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 26bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport java.io.ByteArrayOutputStream; 27bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotimport java.io.PrintStream; 28bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 29bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot/** 30bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot * Unit tests for {@link TestLoader}. 31bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot */ 32bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabotpublic class TestLoaderTest { 33bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 34bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public static class JUnit3Test extends TestCase { 35bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 36bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 37bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public static class JUnit4Test { 38bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot @Test 39bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public void thisIsATest() { 40bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 41bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 42bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 43bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot @RunWith(value = Parameterized.class) 44bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public static class JUnit4RunTest { 45bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public void thisIsMayBeATest() { 46bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 47bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 48bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 49bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public static class NotATest { 50bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public void thisIsNotATest() { 51bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 52bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 53bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 540e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot private TestLoader mLoader; 550e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot 560e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot @Before 570e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot public void setUp() throws Exception { 580e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot mLoader = new TestLoader(new PrintStream(new ByteArrayOutputStream())); 590e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot } 600e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot 61bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot @Test 62bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public void testLoadTests_junit3() { 63bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot assertLoadTestSuccess(JUnit3Test.class); 64bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 65bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 66bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot @Test 67bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public void testLoadTests_junit4() { 68bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot assertLoadTestSuccess(JUnit4Test.class); 69bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 70bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 71bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot @Test 72bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public void testLoadTests_runWith() { 73bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot assertLoadTestSuccess(JUnit4RunTest.class); 74bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 75bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 76bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot @Test 77bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public void testLoadTests_notATest() { 780e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot Assert.assertNull(mLoader.loadIfTest(NotATest.class.getName())); 790e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot Assert.assertEquals(0, mLoader.getLoadedClasses().size()); 800e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot Assert.assertEquals(0, mLoader.getLoadFailures().size()); 81bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 82bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 83bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot @Test 84bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot public void testLoadTests_notExist() { 850e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot Assert.assertNull(mLoader.loadIfTest("notexist")); 860e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot Assert.assertEquals(0, mLoader.getLoadedClasses().size()); 870e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot Assert.assertEquals(1, mLoader.getLoadFailures().size()); 88bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 89bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot 90bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot private void assertLoadTestSuccess(Class<?> clazz) { 910e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot Assert.assertNotNull(mLoader.loadIfTest(clazz.getName())); 920e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot Assert.assertEquals(1, mLoader.getLoadedClasses().size()); 930e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot Assert.assertEquals(0, mLoader.getLoadFailures().size()); 940e1d66fcd74344182e3bfca913744b1a66e7a188Brett Chabot Assert.assertTrue(mLoader.getLoadedClasses().contains(clazz)); 95bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot } 96bb23e68d4dc19a37df318b8d169e3dfd0dd1c20eBrett Chabot} 97