From 0180dfeff341639011ce005a6707c9dc3b55f5df Mon Sep 17 00:00:00 2001 From: Raluca Sauciuc Date: Fri, 3 Oct 2014 10:58:29 -0700 Subject: [PATCH] Fix test framework to allow Mockito tests to run successfully on ART. Currently, Mockito tests don't run on ART (KitKat & L) due to an extra NoClassDefFoundError exception being thrown while trying to resolve internal test runner classes. These exceptions are benign, Mockito's internal test runners all inherit from org.junit.runner.Runner, which is not included in the setup, but none of them are actually used in tests. The same apks succeed on Dalvik, and logcat shows the same exceptions going by, minus the NCDFE's. Section 5.3 of the VM spec says the virtual machine has to wrap a ClassNotFoundException in NoClassDefFoundError if the first exception arises from verification or resolution but not initialization of that particular class. Bug: 17042833 Change-Id: I3af20f6884d9fa3afc3fbf9fcb238be10267827a --- test-runner/src/android/test/ClassPathPackageInfoSource.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-runner/src/android/test/ClassPathPackageInfoSource.java b/test-runner/src/android/test/ClassPathPackageInfoSource.java index 7b10e38e32503..0ffecdb8e9695 100644 --- a/test-runner/src/android/test/ClassPathPackageInfoSource.java +++ b/test-runner/src/android/test/ClassPathPackageInfoSource.java @@ -87,7 +87,7 @@ public class ClassPathPackageInfoSource { // We get errors in the emulator if we don't use the caller's class loader. topLevelClasses.add(Class.forName(className, false, (classLoader != null) ? classLoader : CLASS_LOADER)); - } catch (ClassNotFoundException e) { + } catch (ClassNotFoundException | NoClassDefFoundError e) { // Should not happen unless there is a generated class that is not included in // the .apk. Log.w("ClassPathPackageInfoSource", "Cannot load class. "