Skip to content

Commit 4bc1ff4

Browse files
author
Marcel Schnelle
authored
Update to androidx & introduce Truth assertions (#153)
1 parent 5c9ae86 commit 4bc1ff4

File tree

12 files changed

+56
-55
lines changed

12 files changed

+56
-55
lines changed

buildSrc/src/main/kotlin/Artifacts.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ object Artifacts {
4646
*/
4747
object Instrumentation {
4848
private val groupId = "de.mannodermaus.junit5"
49-
private val currentVersion = "0.2.3-SNAPSHOT"
49+
private val currentVersion = "0.3.0-SNAPSHOT"
5050
val latestStableVersion = "0.2.2"
5151

5252
val Library = Deployed(

buildSrc/src/main/kotlin/Libs.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ import kotlin.String
88
object Libs {
99
/**
1010
* https://developer.android.com/testing */
11-
const val espresso_core: String = "com.android.support.test.espresso:espresso-core:" +
11+
const val espresso_core: String = "androidx.test.espresso:espresso-core:" +
1212
Versions.espresso_core
1313

1414
/**
1515
* https://developer.android.com/testing */
16-
const val com_android_support_test_runner: String = "com.android.support.test:runner:" +
17-
Versions.com_android_support_test_runner
16+
const val androidx_test_runner: String = "androidx.test:runner:" +
17+
Versions.androidx_test_runner
1818

1919
/**
2020
* https://developer.android.com/studio */
@@ -52,9 +52,14 @@ object Libs {
5252
Versions.gradle_bintray_plugin
5353

5454
/**
55-
* http://github.com/square/assertj-android/ */
56-
const val assertj_android: String = "com.squareup.assertj:assertj-android:" +
57-
Versions.assertj_android
55+
* https://github.com/google/truth */
56+
const val truth: String = "com.google.truth:truth:" +
57+
Versions.truth
58+
59+
/**
60+
* https://dl.google.com/dl/android/maven2 */
61+
const val truth_android: String = "androidx.test.ext:truth:" +
62+
Versions.truth_android
5863

5964
/**
6065
* http://commons.apache.org/proper/commons-io/ */

buildSrc/src/main/kotlin/Versions.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import kotlin.String
77
*
88
* YOU are responsible for updating manually the dependency version. */
99
object Versions {
10-
const val espresso_core: String = "3.0.1" // available: "3.0.2"
10+
const val espresso_core: String = "3.1.1"
1111

12-
const val com_android_support_test_runner: String = "1.0.2"
12+
const val androidx_test_runner: String = "1.1.1"
1313

1414
const val aapt2: String = "3.2.1-4818971"
1515

@@ -27,7 +27,9 @@ object Versions {
2727

2828
const val gradle_bintray_plugin: String = "1.8.4"
2929

30-
const val assertj_android: String = "1.2.0"
30+
const val truth: String = "0.43"
31+
32+
const val truth_android: String = "1.1.0"
3133

3234
const val commons_io: String = "2.6"
3335

instrumentation/api/build.gradle.kts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ android {
2222
multiDexEnabled = true
2323

2424
// Usually, this is automatically applied through the Gradle Plugin
25-
testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
25+
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2626
testInstrumentationRunnerArgument("runnerBuilder",
2727
"de.mannodermaus.junit5.AndroidJUnit5Builder")
2828
}
@@ -75,20 +75,21 @@ configurations {
7575

7676
dependencies {
7777
implementation(Libs.kotlin_stdlib)
78-
implementation(Libs.com_android_support_test_runner)
78+
implementation(Libs.androidx_test_runner)
7979
implementation(Libs.junit_jupiter_api)
8080

8181
// This is required by the "instrumentation-runner" companion library,
8282
// since it can't provide any JUnit 5 runtime libraries itself
8383
// due to fear of prematurely incrementing the minSdkVersion requirement.
8484
runtimeOnly(Libs.junit_platform_runner)
8585

86+
commonTestImplementation(Libs.truth)
8687
commonTestImplementation(Libs.assertj_core)
8788
commonTestImplementation(Libs.mockito_core)
8889
commonTestImplementation(Libs.junit_jupiter_api)
8990
commonTestImplementation(Libs.junit_jupiter_engine)
9091

91-
androidTestImplementation(Libs.assertj_android)
92+
androidTestImplementation(Libs.truth_android)
9293
androidTestImplementation(Libs.espresso_core)
9394

9495
androidTestRuntimeOnly(project(":runner"))

instrumentation/api/src/androidTest/kotlin/de/mannodermaus/junit5/test/ActivityTestIntegrationTests.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
package de.mannodermaus.junit5.test
22

33
import android.content.Intent
4-
import android.support.test.espresso.Espresso.onView
5-
import android.support.test.espresso.assertion.ViewAssertions.matches
6-
import android.support.test.espresso.matcher.ViewMatchers.withId
7-
import android.support.test.espresso.matcher.ViewMatchers.withText
4+
import androidx.test.espresso.Espresso.onView
5+
import androidx.test.espresso.assertion.ViewAssertions.matches
6+
import androidx.test.espresso.matcher.ViewMatchers.withId
7+
import androidx.test.espresso.matcher.ViewMatchers.withText
8+
import androidx.test.ext.truth.content.IntentSubject.assertThat
89
import de.mannodermaus.junit5.ActivityAlreadyLaunchedException
910
import de.mannodermaus.junit5.ActivityNotLaunchedException
1011
import de.mannodermaus.junit5.ActivityTest
1112
import de.mannodermaus.junit5.Tested
1213
import de.mannodermaus.junit5.test.activities.FirstActivity
1314
import de.mannodermaus.junit5.test.activities.OtherActivity
14-
import org.assertj.android.api.Assertions.assertThat
1515
import org.assertj.core.api.Assertions.assertThat
1616
import org.junit.jupiter.api.Assertions.assertEquals
1717
import org.junit.jupiter.api.Assertions.assertThrows
@@ -67,7 +67,7 @@ class ActivityTestIntegrationTests {
6767
@Test
6868
@ActivityTest(
6969
FirstActivity::class,
70-
launchFlags = Intent.FLAG_ACTIVITY_NO_HISTORY)
70+
launchFlags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY)
7171
@DisplayName("Launch Flags are properly applied")
7272
fun launchFlagsAreProperlyApplied(activity: FirstActivity) {
7373
assertIntentHasFlag(activity.intent, Intent.FLAG_ACTIVITY_NO_HISTORY)
@@ -102,14 +102,15 @@ class ActivityTestIntegrationTests {
102102
action = "custom.intent.action"
103103
putExtra("extraArgument", "YOLO")
104104
putExtra("intArgument", 1337)
105-
addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)
105+
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)
106106
}
107107

108108
val activity = tested.launchActivity(intent)
109-
assertThat(activity.intent)
110-
.hasAction("custom.intent.action")
111-
.hasExtra("extraArgument", "YOLO")
112-
.hasExtra("intArgument", 1337)
109+
assertThat(activity.intent).apply {
110+
hasAction("custom.intent.action")
111+
extras().string("extraArgument").isEqualTo("YOLO")
112+
extras().integer("intArgument").isEqualTo(1337)
113+
}
113114

114115
assertIntentHasFlag(activity.intent, Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)
115116
}

instrumentation/api/src/androidTest/kotlin/de/mannodermaus/junit5/test/JavaInteropVerificationTests.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
import org.junit.jupiter.api.DisplayName;
1010
import org.junit.jupiter.api.Test;
1111

12-
import static android.support.test.espresso.Espresso.onView;
13-
import static android.support.test.espresso.action.ViewActions.click;
14-
import static android.support.test.espresso.matcher.ViewMatchers.withId;
15-
import static org.assertj.android.api.Assertions.assertThat;
12+
import static androidx.test.espresso.Espresso.onView;
13+
import static androidx.test.espresso.action.ViewActions.click;
14+
import static androidx.test.espresso.matcher.ViewMatchers.withId;
15+
import static androidx.test.ext.truth.content.IntentSubject.assertThat;
1616
import static org.assertj.core.api.Assertions.assertThat;
1717

1818
/**
@@ -46,7 +46,7 @@ void testedApiRoundTrip(Tested<FirstActivity> tested) {
4646

4747
Instrumentation.ActivityResult result = tested.getActivityResult();
4848
assertThat(result.getResultCode()).isEqualTo(Activity.RESULT_OK);
49-
assertThat(result.getResultData()).hasExtra("returnValue", 1337);
49+
assertThat(result.getResultData()).extras().integer("returnValue").isEqualTo(1337);
5050

5151
FirstActivity retrieved = tested.getActivity();
5252
assertThat(launched).isEqualTo(retrieved);

instrumentation/api/src/main/kotlin/de/mannodermaus/junit5/ActivityTest.kt

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,12 @@ import android.app.Instrumentation
55
import android.app.Instrumentation.ActivityResult
66
import android.content.Intent
77
import android.os.Bundle
8-
import android.support.annotation.VisibleForTesting
9-
import android.support.test.InstrumentationRegistry
10-
import android.support.test.runner.MonitoringInstrumentation
118
import android.util.Log
9+
import androidx.annotation.VisibleForTesting
10+
import androidx.test.platform.app.InstrumentationRegistry
11+
import androidx.test.runner.MonitoringInstrumentation
1212
import org.junit.jupiter.api.Test
13-
import org.junit.jupiter.api.extension.AfterTestExecutionCallback
14-
import org.junit.jupiter.api.extension.BeforeTestExecutionCallback
15-
import org.junit.jupiter.api.extension.ExtendWith
16-
import org.junit.jupiter.api.extension.ExtensionContext
17-
import org.junit.jupiter.api.extension.ParameterContext
18-
import org.junit.jupiter.api.extension.ParameterResolver
13+
import org.junit.jupiter.api.extension.*
1914
import org.junit.platform.commons.support.AnnotationSupport
2015
import java.lang.reflect.Parameter
2116
import java.lang.reflect.ParameterizedType
@@ -62,7 +57,7 @@ private const val LOG_TAG = "ActivityTest"
6257
annotation class ActivityTest(
6358
val value: KClass<out Activity>,
6459
val targetPackage: String = ABSENT_TARGET_PACKAGE,
65-
val launchFlags: Int = NO_FLAGS_SET,
60+
val launchFlags: Int = Intent.FLAG_ACTIVITY_NEW_TASK,
6661
val initialTouchMode: Boolean = DEFAULT_INITIAL_TOUCH_MODE,
6762
val launchActivity: Boolean = DEFAULT_LAUNCH_ACTIVITY)
6863

@@ -181,7 +176,8 @@ internal class TestedImpl<out T : Activity>(
181176
// Used to override the default Instrumentation, obtained from the registry
182177
// (primary application: Unit Testing)
183178
private var _instrumentation: Instrumentation? = null
184-
private val instrumentation get() = _instrumentation ?: InstrumentationRegistry.getInstrumentation()
179+
private val instrumentation
180+
get() = _instrumentation ?: InstrumentationRegistry.getInstrumentation()
185181

186182
private var _activity: T? = null
187183
override val activity get() = _activity
@@ -200,7 +196,7 @@ internal class TestedImpl<out T : Activity>(
200196
if (startIntent.component == null) {
201197
// Fall back to the default Target Context's package name if none is set
202198
val targetPackage = if (this.targetPackage == ABSENT_TARGET_PACKAGE) {
203-
InstrumentationRegistry.getTargetContext().packageName
199+
InstrumentationRegistry.getInstrumentation().targetContext.packageName
204200
} else {
205201
this.targetPackage
206202
}
@@ -285,12 +281,12 @@ internal class TestedImpl<out T : Activity>(
285281
val type = parameterTypes[index]
286282

287283
return when (type) {
288-
// Possibly a developer error; throw a descriptive exception
284+
// Possibly a developer error; throw a descriptive exception
289285
is ParameterType.InvalidTestedWrapper -> throw UnexpectedActivityException(
290286
expected = this.activityClass,
291287
actual = type.actual)
292288

293-
// Otherwise, communicate only valid parameter types
289+
// Otherwise, communicate only valid parameter types
294290
else -> type.valid
295291
}
296292
}
@@ -366,22 +362,22 @@ internal class ActivityTestExtension : BeforeTestExecutionCallback, ParameterRes
366362
/* ParameterResolver */
367363

368364
override fun supportsParameter(parameterContext: ParameterContext,
369-
extensionContext: ExtensionContext): Boolean {
365+
extensionContext: ExtensionContext): Boolean {
370366
return delegate.validateParameterAt(parameterContext.index)
371367
}
372368

373369
override fun resolveParameter(parameterContext: ParameterContext,
374-
extensionContext: ExtensionContext): Any? {
370+
extensionContext: ExtensionContext): Any? {
375371
val parameterType = delegate.parameterTypeAt(parameterContext.index)
376372

377373
return when (parameterType) {
378-
// val parameter: Activity
374+
// val parameter: Activity
379375
ParameterType.Activity -> delegate.activity
380376

381-
// val parameter: Tested<Activity>
377+
// val parameter: Tested<Activity>
382378
ParameterType.ValidTestedWrapper -> delegate
383379

384-
// Otherwise, library error (supportsParameter() should filter it)
380+
// Otherwise, library error (supportsParameter() should filter it)
385381
else -> throw IllegalArgumentException(
386382
"Unexpected ParameterType resolution requested for '$parameterType'")
387383
}

instrumentation/sample/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,12 @@ dependencies {
7777
testRuntimeOnly(Libs.junit_jupiter_engine)
7878

7979
androidTestImplementation(Libs.junit)
80-
androidTestImplementation(Libs.com_android_support_test_runner)
80+
androidTestImplementation(Libs.androidx_test_runner)
8181

8282
// Android Instrumentation Tests wth JUnit 5
8383
androidTestImplementation(Libs.junit_jupiter_api)
8484
androidTestRuntimeOnly(Libs.junit_jupiter_engine)
8585
androidTestRuntimeOnly(Libs.junit_platform_runner)
86-
androidTestImplementation(Libs.android_instrumentation_test)
87-
androidTestRuntimeOnly(Libs.android_instrumentation_test_runner)
86+
androidTestImplementation(project(":api"))
87+
androidTestRuntimeOnly(project(":runner"))
8888
}

plugin/android-junit5-tests/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/FunctionalTests.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import java.nio.file.Paths
2121

2222
/**
2323
* Created by Marcel Schnelle on 2018/06/19.
24-
* Copyright © 2018 TenTen Technologies Limited. All rights reserved.
2524
*/
2625

2726
// Data holder for an invocation of a functional test.

plugin/android-junit5-tests/src/test/kotlin/de/mannodermaus/gradle/plugins/junit5/UtilTests.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import org.junit.jupiter.api.Test
55

66
/**
77
* Created by Marcel Schnelle on 2018/06/28.
8-
* Copyright © 2018 TenTen Technologies Limited. All rights reserved.
98
*/
109
class IncludeExcludeContainerTests {
1110

0 commit comments

Comments
 (0)