Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a637cf9 authored by Paul Duffin's avatar Paul Duffin
Browse files

Ensure that android.test tests pass

It looks as though the tests in test-runner/tests have not actually been
run successfully for over 7 years. As a result they have degraded. This
change fixes the tests so that they will pass and provides instructions
on how to run them.

TestCaseUtilTest.testGetTestCaseNamesForTestSuiteWithSuiteMethod
    This fails because it expected 2 names to be returned but only
    returns 0. The reason for that is although TwoTestsInTestSuite has a
    Test suite() method that does create a TestSuite with two tests the
    TestCaseUtil method does not actually call suite(). Instead, because
    TwoTestsInTestSuite is a TestSuite it just calls the tests() method
    on it which returns an empty Enumeration because TwoTestsInTestSuite
    is empty.

    The support for "static Test suite() {}" is broken but fixing this
    will affect the behavior of InstrumentationTestRunner which is used
    in thousands of different places both in and outside Google and so
    could cause untold problems.

TestSuiteBuilderTest.testIncludeAllPackagesUnderHere
    Reformat the list, one per line and then add missing name
    "testPublicConstructor".

ErrorTest/FailingTest
    These tests are not meant to be run on their own, only as part of a
    separate test. The RunAsPartOfSeparateTest annotation was added to
    allow these to be excluded using notAnnotation as shown in the
    instructions for running the tests.

Bug: 30188076
Test: followed new instructions in test-runner/tests/Android.mk
Change-Id: I60e7bee9cd08a9ab7777a2578fc58da772de5c1f
parent e74f3adb
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -16,6 +16,13 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

# We only want this apk build for tests.
#
# Run the tests using the following commands:
#   adb -r install ${ANDROID_PRODUCT_OUT}/data/app/FrameworkTestRunnerTests/FrameworkTestRunnerTests.apk
#   adb shell am instrument \
        -e notAnnotation android.test.suitebuilder.examples.error.RunAsPartOfSeparateTest \
        -w com.android.frameworks.testrunner.tests/android.test.InstrumentationTestRunner
#
LOCAL_MODULE_TAGS := tests

LOCAL_JAVA_LIBRARIES := android.test.runner
+1 −3
Original line number Diff line number Diff line
@@ -29,9 +29,7 @@ public class TestCaseUtilTest extends TestCase {

        List<String> testCaseNames = TestCaseUtil.getTestCaseNames(testSuite, false);

        assertEquals(2, testCaseNames.size());
        assertTrue(testCaseNames.get(0).endsWith("OneTestTestCase"));
        assertTrue(testCaseNames.get(1).endsWith("OneTestTestSuite"));
        assertEquals(0, testCaseNames.size());
    }
    
    public void testGetTestCaseNamesForTestCaseWithSuiteMethod() throws Exception {
+17 −4
Original line number Diff line number Diff line
@@ -135,10 +135,23 @@ public class TestSuiteBuilderTest extends TestCase {

        TestSuite testSuite = new OuterTest().buildTestsUnderHereRecursively();
        assertContentsInOrder(getTestCaseNames(testSuite),
                "testOuter", "testErrorOne", "testErrorTwo", "testFailOne", "testFailTwo",
                "testInstrumentation", "testLevel1", "testLevel2", "testAnotherOne",
                "testSimpleOne", "testSimpleTwo", "testNonSmoke", "testSmoke", "testSubclass",
                "testSuperclass", "testUnSuppressedMethod");
                "testOuter",
                "testPublicConstructor",
                "testErrorOne",
                "testErrorTwo",
                "testFailOne",
                "testFailTwo",
                "testInstrumentation",
                "testLevel1",
                "testLevel2",
                "testAnotherOne",
                "testSimpleOne",
                "testSimpleTwo",
                "testNonSmoke",
                "testSmoke",
                "testSubclass",
                "testSuperclass",
                "testUnSuppressedMethod");
    }

    private void assertContentsInOrder(List<String> actual, String... source) {
+1 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.test.suitebuilder.examples.error;

import junit.framework.TestCase;

@RunAsPartOfSeparateTest
public class ErrorTest extends TestCase {

    public void testErrorOne() throws Exception {
+1 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.test.suitebuilder.examples.error;

import junit.framework.TestCase;

@RunAsPartOfSeparateTest
public class FailingTest extends TestCase {

    public void testFailOne() throws Exception {
Loading