From 1686de0d71d687990ca6f0d4b621bc4d52dee146 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sun, 23 Feb 2020 17:36:06 -0800 Subject: Add test runners --- app/build.gradle | 2 +- .../kotlin/com/pitchedapps/frost/FrostTestApp.kt | 31 ++++++++++++++++++++++ .../frost/activities/ImageActivityTest.kt | 8 ++++-- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f36aa430..63ada71b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,7 +48,7 @@ android { throw new GradleException("Version name mismatch, expected ${androidGitVersion.name()}, got $versionName") } multiDexEnabled true - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "com.pitchedapps.frost.FrostTestRunner" javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/src/schemas".toString()] diff --git a/app/src/androidTest/kotlin/com/pitchedapps/frost/FrostTestApp.kt b/app/src/androidTest/kotlin/com/pitchedapps/frost/FrostTestApp.kt index 2931a30c..607adbf1 100644 --- a/app/src/androidTest/kotlin/com/pitchedapps/frost/FrostTestApp.kt +++ b/app/src/androidTest/kotlin/com/pitchedapps/frost/FrostTestApp.kt @@ -17,18 +17,49 @@ package com.pitchedapps.frost import android.app.Application +import android.content.Context +import androidx.test.runner.AndroidJUnitRunner import ca.allanwang.kau.kpref.KPrefFactory import ca.allanwang.kau.kpref.KPrefFactoryInMemory import com.pitchedapps.frost.db.FrostDatabase import com.pitchedapps.frost.facebook.FbCookie import com.pitchedapps.frost.utils.Prefs import com.pitchedapps.frost.utils.Showcase +import org.junit.rules.TestRule +import org.junit.runner.Description +import org.junit.runners.model.Statement import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidLogger +import org.koin.core.KoinComponent import org.koin.core.context.startKoin +import org.koin.core.get import org.koin.core.module.Module import org.koin.dsl.module +class FrostTestRunner : AndroidJUnitRunner() { + override fun newApplication( + cl: ClassLoader?, + className: String?, + context: Context? + ): Application { + return super.newApplication(cl, FrostTestApp::class.java.name, context) + } +} + +class FrostTestRule : TestRule { + override fun apply(base: Statement, description: Description): Statement = + object : Statement(), KoinComponent { + override fun evaluate() { + + // Reset prefs + get().reset() + get().reset() + + base.evaluate() + } + } +} + class FrostTestApp : Application() { override fun onCreate() { diff --git a/app/src/androidTest/kotlin/com/pitchedapps/frost/activities/ImageActivityTest.kt b/app/src/androidTest/kotlin/com/pitchedapps/frost/activities/ImageActivityTest.kt index cd8aaa24..5f1735f5 100644 --- a/app/src/androidTest/kotlin/com/pitchedapps/frost/activities/ImageActivityTest.kt +++ b/app/src/androidTest/kotlin/com/pitchedapps/frost/activities/ImageActivityTest.kt @@ -19,6 +19,7 @@ package com.pitchedapps.frost.activities import android.content.Intent import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.rule.ActivityTestRule +import com.pitchedapps.frost.FrostTestRule import com.pitchedapps.frost.helper.getResource import com.pitchedapps.frost.utils.ARG_COOKIE import com.pitchedapps.frost.utils.ARG_IMAGE_URL @@ -39,16 +40,20 @@ import org.junit.After import org.junit.Before import org.junit.Rule import org.junit.Test +import org.junit.rules.RuleChain +import org.junit.rules.TestRule import org.junit.rules.Timeout import org.junit.runner.RunWith @RunWith(AndroidJUnit4::class) class ImageActivityTest { - @get:Rule val activity: ActivityTestRule = ActivityTestRule(ImageActivity::class.java, true, false) + @get:Rule + val rule: TestRule = RuleChain.outerRule(FrostTestRule()).around(activity) + @get:Rule val globalTimeout: Timeout = Timeout.seconds(15) @@ -124,7 +129,6 @@ class ImageActivityTest { fun invalidImageTest() { launchActivity(mockServer.url("text").toString()) mockServer.takeRequest() - activity.activity.isFinishing with(activity.activity) { assertEquals(1, mockServer.requestCount, "One http request expected") assertEquals( -- cgit v1.2.3