diff options
-rw-r--r-- | Android.mk | 17 | ||||
-rw-r--r-- | AndroidManifest.xml | 12 | ||||
-rw-r--r-- | dexmaker/src/test/java/com/google/dexmaker/DexMakerTest.java | 13 | ||||
-rw-r--r-- | dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java | 4 |
4 files changed, 44 insertions, 2 deletions
@@ -36,7 +36,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := dexmaker-tests LOCAL_SDK_VERSION := 10 LOCAL_SRC_FILES := $(call all-java-files-under, dexmaker/src/test/java) -LOCAL_STATIC_JAVA_LIBRARIES := dexmaker +LOCAL_STATIC_JAVA_LIBRARIES := dexmaker android-support-test include $(BUILD_STATIC_JAVA_LIBRARY) # Build Dexmaker's MockMaker, a plugin to Mockito @@ -47,3 +47,18 @@ LOCAL_SRC_FILES := $(call all-java-files-under, mockito/src/main/java) LOCAL_JAVA_RESOURCE_DIRS := mockito/src/main/resources LOCAL_JAVA_LIBRARIES := dexmaker mockito-api include $(BUILD_STATIC_JAVA_LIBRARY) + +# Build a test APK +# +# Run the tests as follows: +# m -j32 DexmakerTests && \ + am install -r -g $OUT/data/app/DexmakerTests/DexmakerTests.apk \ + adb shell am instrument -w com.google.dexmaker.tests +# +include $(CLEAR_VARS) +LOCAL_MODULE_TAGS := tests +LOCAL_PACKAGE_NAME := DexmakerTests +LOCAL_STATIC_JAVA_LIBRARIES := \ + dexmaker-tests + +include $(BUILD_PACKAGE) diff --git a/AndroidManifest.xml b/AndroidManifest.xml new file mode 100644 index 0000000..2c88308 --- /dev/null +++ b/AndroidManifest.xml @@ -0,0 +1,12 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.google.dexmaker.tests" > + + <application> + <uses-library android:name="android.test.runner" /> + </application> + + <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner" + android:targetPackage="com.google.dexmaker.tests" + android:label="Dexmaker Tests"/> + +</manifest> diff --git a/dexmaker/src/test/java/com/google/dexmaker/DexMakerTest.java b/dexmaker/src/test/java/com/google/dexmaker/DexMakerTest.java index 2b7a27b..36e6c00 100644 --- a/dexmaker/src/test/java/com/google/dexmaker/DexMakerTest.java +++ b/dexmaker/src/test/java/com/google/dexmaker/DexMakerTest.java @@ -16,6 +16,7 @@ package com.google.dexmaker; +import android.support.test.InstrumentationRegistry; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; @@ -2007,6 +2008,18 @@ public final class DexMakerTest extends TestCase { } public static File getDataDirectory() { + // Assume that this is being run as an APK by AndroidJUnitRunner and so get the directory + // where the APK can create files. + try { + // This will fail on Vogar as it will not register an Instrumentation. + return InstrumentationRegistry.getContext().getFilesDir(); + } catch (IllegalStateException t) { + // Drop through to an alternate mechanism for getting a directory that works on Vogar. + if (!t.getMessage().contains("No instrumentation registered!")) { + // The exception wasn't expected. + throw t; + } + } String envVariable = "ANDROID_DATA"; String defaultLoc = "/data"; String path = System.getenv(envVariable); diff --git a/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java b/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java index a959203..9c4cffe 100644 --- a/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java +++ b/dexmaker/src/test/java/com/google/dexmaker/stock/ProxyBuilderTest.java @@ -37,7 +37,9 @@ public class ProxyBuilderTest extends TestCase { public void setUp() throws Exception { super.setUp(); - versionedDxDir.mkdirs(); + if (!versionedDxDir.exists() && !versionedDxDir.mkdirs()) { + throw new IOException("Could not create " + versionedDxDir); + } clearVersionedDxDir(); getGeneratedProxyClasses().clear(); } |