44
55package dev .flutter .plugins .e2e ;
66
7+ import android .app .Activity ;
78import android .util .Log ;
89import androidx .test .rule .ActivityTestRule ;
910import java .lang .reflect .Field ;
1011import java .util .Map ;
1112import java .util .concurrent .ExecutionException ;
1213import org .junit .Rule ;
13- import org .junit .rules .TestRule ;
1414import org .junit .runner .Description ;
1515import org .junit .runner .Runner ;
1616import org .junit .runner .notification .Failure ;
1717import org .junit .runner .notification .RunNotifier ;
1818
1919public class FlutterTestRunner extends Runner {
20-
2120 private static final String TAG = "FlutterTestRunner" ;
2221
2322 final Class testClass ;
24- TestRule rule = null ;
23+ ActivityTestRule < Activity > rule = null ;
2524
2625 public FlutterTestRunner (Class <?> testClass ) {
2726 super ();
@@ -33,10 +32,7 @@ public FlutterTestRunner(Class<?> testClass) {
3332 if (field .isAnnotationPresent (Rule .class )) {
3433 try {
3534 Object instance = testClass .newInstance ();
36- if (field .get (instance ) instanceof ActivityTestRule ) {
37- rule = (TestRule ) field .get (instance );
38- break ;
39- }
35+ rule = (ActivityTestRule <Activity >) field .get (instance );
4036 } catch (InstantiationException | IllegalAccessException e ) {
4137 // This might occur if the developer did not make the rule public.
4238 // We could call field.setAccessible(true) but it seems better to throw.
@@ -57,9 +53,7 @@ public void run(RunNotifier notifier) {
5753 throw new RuntimeException ("Unable to run tests due to missing activity rule" );
5854 }
5955 try {
60- if (rule instanceof ActivityTestRule ) {
61- ((ActivityTestRule ) rule ).launchActivity (null );
62- }
56+ rule .launchActivity (null );
6357 } catch (RuntimeException e ) {
6458 Log .v (TAG , "launchActivity failed, possibly because the activity was already running. " + e );
6559 Log .v (
0 commit comments