From ae81b1cdf3a58b6d04255997a1a2a73f0d87bebf Mon Sep 17 00:00:00 2001 From: Bernardo Rufino Date: Mon, 30 Jul 2018 16:56:12 +0100 Subject: [PATCH] Add README to robotests Test: No Change-Id: I8c42c1536d6072f4a8294197e187879ec9617e20 --- services/robotests/README | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 services/robotests/README diff --git a/services/robotests/README b/services/robotests/README new file mode 100644 index 0000000000000..3c682922102d7 --- /dev/null +++ b/services/robotests/README @@ -0,0 +1,23 @@ +This folder is for Robolectric tests inside the platform. + +To add a test class annotate it as follows: + +@RunWith(FrameworkRobolectricTestRunner.class) +@Config(manifest = Config.NONE, sdk = 26) +@SystemLoaderClasses({ClassUnderTest.class, DependencyClasses.class}) +@SystemLoaderPackages({"com.android.server.yourmodule"}) + +Robolectric loads some classes that it decides from versioned jars of the framework. Since we are +part of the framework some of our classes get loaded from these jars. This is NOT what we want, we +want to test against what we wrote in the tree. Because of this we use a custom test runner, +FrameworkRobolectricTestRunner, that bypasses these jars and loads certain classes from the system +class loader. + +To specify which classes to load use either @SystemLoaderClasses or @SystemLoaderPackages. In +practice: +* You MUST put the class under test here. +* If you encounter any exceptions that might be caused by a different version of the class being +loaded, such as NoSuchMethodException, put the class involved in the exception in this annotation +and try again. + +Check Android.mk file for more info.