Add test runner log when test case class is not loaded.
The test runner will only load TestCase classes that have a public constructor with either no params or a single String parameter. This is fairly subtle behavior and can be difficult to catch. This change adds a log message when a TestCase class is not loaded, and adds some associated unit tests. Change-Id: I6fc63e4179c949620f5773e0ae134f99905a6fb2
This commit is contained in:
@ -46,6 +46,8 @@ import java.util.TreeSet;
|
||||
*/
|
||||
public class TestGrouping {
|
||||
|
||||
private static final String LOG_TAG = "TestGrouping";
|
||||
|
||||
SortedSet<Class<? extends TestCase>> testCaseClasses;
|
||||
|
||||
public static final Comparator<Class<? extends TestCase>> SORT_BY_SIMPLE_NAME
|
||||
@ -114,7 +116,7 @@ public class TestGrouping {
|
||||
for (String packageName : packageNames) {
|
||||
List<Class<? extends TestCase>> addedClasses = testCaseClassesInPackage(packageName);
|
||||
if (addedClasses.isEmpty()) {
|
||||
Log.w("TestGrouping", "Invalid Package: '" + packageName
|
||||
Log.w(LOG_TAG, "Invalid Package: '" + packageName
|
||||
+ "' could not be found or has no tests");
|
||||
}
|
||||
testCaseClasses.addAll(addedClasses);
|
||||
@ -234,6 +236,10 @@ public class TestGrouping {
|
||||
}
|
||||
}
|
||||
}
|
||||
Log.i(LOG_TAG, String.format(
|
||||
"TestCase class %s is missing a public constructor with no parameters " +
|
||||
"or a single String parameter - skipping",
|
||||
aClass.getName()));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (C) 2010 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.test.suitebuilder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link TestGrouping}
|
||||
*/
|
||||
public class TestGroupingTest extends TestCase {
|
||||
|
||||
private TestGrouping mGrouping;
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
mGrouping = new TestGrouping(TestGrouping.SORT_BY_SIMPLE_NAME);
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies that TestCases with no public constructor are not loaded.
|
||||
* Relies on fixture classes in android.test.suitebuilder.examples.constructor
|
||||
*/
|
||||
public void testGetTests_noPublicConstructor() {
|
||||
mGrouping.addPackagesRecursive("android.test.suitebuilder.examples.constructor");
|
||||
List<TestMethod> tests = mGrouping.getTests();
|
||||
// only the PublicConstructorTest's test method should be present
|
||||
assertEquals(1, tests.size());
|
||||
assertEquals("testPublicConstructor", tests.get(0).getName());
|
||||
}
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (C) 2010 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.test.suitebuilder.examples.constructor;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* A {@link TestCase} which should not be loaded since it has non-public constructors with no args.
|
||||
*/
|
||||
public class NoPublicConstructorTest extends TestCase {
|
||||
|
||||
NoPublicConstructorTest() {
|
||||
}
|
||||
|
||||
public NoPublicConstructorTest(String foo, String foo2) {
|
||||
}
|
||||
|
||||
public void testNotRun() {
|
||||
fail("method in NoPublicConstructorTest run unexpectedly");
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (C) 2010 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.test.suitebuilder.examples.constructor;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* A protected constructor test case that should not be loaded.
|
||||
*/
|
||||
public class ProtectedConstructorTest extends TestCase {
|
||||
|
||||
protected ProtectedConstructorTest() {
|
||||
}
|
||||
|
||||
public void testNotRun() {
|
||||
fail("method in ProtectedConstructorTest run unexpectedly");
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (C) 2010 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.test.suitebuilder.examples.constructor;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* A public constructor test case that should be loaded.
|
||||
*/
|
||||
public class PublicConstructorTest extends TestCase {
|
||||
|
||||
public void testPublicConstructor() {
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user