aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Hamilton <jham@google.com>2013-08-06 19:44:52 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-08-06 19:44:52 +0000
commit6bf395c984ed3f69711663b006aeffbb0f7e8a90 (patch)
tree245eddc4d5eebaeef388f865e18e85ef930a2f71
parentfd457c259610a8a7533482b160ffd8607db78b40 (diff)
parentb276278567ee51bf43669a5da4b55deea8e4df09 (diff)
downloadrobolectric-kitkat-wear.tar.gz
-rw-r--r--src/main/java/com/xtremelabs/robolectric/RobolectricTestRunner.java29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/main/java/com/xtremelabs/robolectric/RobolectricTestRunner.java b/src/main/java/com/xtremelabs/robolectric/RobolectricTestRunner.java
index b03307976..50fc33bf5 100644
--- a/src/main/java/com/xtremelabs/robolectric/RobolectricTestRunner.java
+++ b/src/main/java/com/xtremelabs/robolectric/RobolectricTestRunner.java
@@ -117,6 +117,25 @@ public class RobolectricTestRunner extends BlockJUnit4ClassRunner implements Rob
}
/**
+ * Creates a runner to run {@code testClass}. Looks in your working directory for your AndroidManifest.xml file
+ * and res directory.
+ *
+ * @param testClass the test class to be run
+ * @param classLoader a custom RobolectricClassLoader to be used.
+ * @throws InitializationError if junit says so
+ */
+ public RobolectricTestRunner(final Class<?> testClass, RobolectricClassLoader classLoader)
+ throws InitializationError {
+ this(testClass,
+ isInstrumented() ? null : ShadowWrangler.getInstance(),
+ isInstrumented() ? null : classLoader,
+ new RobolectricConfig(
+ new File(getSystemProperty(MANIFEST_PATH_PROPERTY, DEFAULT_MANIFEST_PATH)),
+ new File(getSystemProperty(RES_PATH_PROPERTY, DEFAULT_RES_PATH)),
+ new File(getSystemProperty(ASSETS_PATH_PROPERTY, DEFAULT_ASSETS_PATH))));
+ }
+
+ /**
* Call this constructor in subclasses in order to specify non-default configuration (e.g. location of the
* AndroidManifest.xml file and resource directory).
*
@@ -229,11 +248,12 @@ public class RobolectricTestRunner extends BlockJUnit4ClassRunner implements Rob
* @throws InitializationError if junit says so
*/
protected RobolectricTestRunner(final Class<?> testClass, final ClassHandler classHandler, final RobolectricClassLoader classLoader, final RobolectricConfig robolectricConfig, final DatabaseMap map) throws InitializationError {
- super(isInstrumented() ? testClass : classLoader.bootstrap(testClass));
+ super(isInstrumented() ? testClass
+ : ensureClassLoaderNotNull(classLoader).bootstrap(testClass));
if (!isInstrumented()) {
this.classHandler = classHandler;
- this.classLoader = classLoader;
+ this.classLoader = ensureClassLoaderNotNull(classLoader);
this.robolectricConfig = robolectricConfig;
this.databaseMap = setupDatabaseMap(testClass, map);
@@ -259,6 +279,11 @@ public class RobolectricTestRunner extends BlockJUnit4ClassRunner implements Rob
}
}
+ private static RobolectricClassLoader ensureClassLoaderNotNull(
+ RobolectricClassLoader classLoader) {
+ return classLoader == null ? getDefaultLoader() : classLoader;
+ }
+
protected static boolean isInstrumented() {
return instrumentDetector.isInstrumented();
}