Test di unità Android: Cucumber-jvm + Strumentazione Android

Utilizzando: Cetriolo-JVM con Android Instrumentation + Espresso).

Riferimento Github link : https://github.com/mfellner/cucumber-android per questo. Il campione semplice funziona bene.

  • Android - Utilizzo corretto di invalidateOptionsMenu ()
  • Immagine di Android salvata sulla scheda SD non visualizzata in Galleria
  • Applicazione di esempio Android non visualizzata
  • Esecuzione non rioutput per il task ': app: dexDebug' Android Studio
  • Ritaglio rettangular ridimensionabile Android
  • Suggerimento di posizionamento in multilinea EditText - TextInputLayout
  • Problema con la strumentazione di cetriolo-jvm + android: Ma nel campione in collegamento, utilizza ActivityInstrumentationTestCase2 che è deprecata. Vorrei utilizzare la class @Rule – ActivityTestRule come detto da Google.

    Qui la mia domanda è: per l'uso di cetriolo-jvm, sto utilizzando il CucumberInstrumentationCore invece di testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner".

    Così le annotazioni junit di Android come @Rule per ActivityTestRule non vengono analizzate da CucumberInstrumentation. Così è ansible superare questo problema?

    Allora è la mia decisione di usare la strumentazione di cetriolo-jvm + android. La mia domanda non è solo per la class deprecata, ma a livello mondiale è una buona idea andare alla strumentazione cetriolo-jvm + android, in quanto non è in grado di utilizzare le caratteristiche della strumentazione a causa dell'analisi delle annotazioni.

  • Vedere le modifiche nelle origini della libreria di supporto Android tra due versioni
  • android: Determinare il tipo di sicurezza delle reti wifi in intervallo (senza collegarsi a loro)
  • Gestione di exception di memory di gestione di Android sull'elaborazione delle immagini
  • Scarica i file di espansione su tablet
  • Applicazione Android che non riceve notifica Firebase quando l'applicazione viene arrestata dal vassoio multifunction
  • perché ImageView non può aggiornarsi prima di SystemClock.sleep ()
  • One Solution collect form web for “Test di unità Android: Cucumber-jvm + Strumentazione Android”

    Il tuo corridore dovrebbe ereditare da Android JUnitRunner:

    public class Instrumentation extends AndroidJUnitRunner { private final CucumberInstrumentationCore instrumentationCore = new CucumberInstrumentationCore(this); @Override public void onCreate(final Bundle bundle) { instrumentationCore.create(bundle); super.onCreate(bundle); } @Override public void onStart() { waitForIdleSync(); instrumentationCore.start(); } 

    Prestare attenzione alla super class è stata inizializzata alla fine di onCreate.

    Quindi, modificare il defaultConfig nel file build.grade:

     defaultConfig { applicationId "your.package.name" testApplicationId "your.steps.package" testInstrumentationRunner "your.package.Instrumentation" } 

    E infine, la class di definizione dei passaggi, ereditata da ActivityInstrumentationTestCase2, dovrebbe essere:

     public class BaseStepDefinitions { public static final String TAG = BaseStepDefinitions.class.getSimpleName(); @Rule public ActivityTestRule<StartupActivity> mActivityRule = new ActivityTestRule<>(StartupActivity.class); @Before public void setUp() throws Exception { mActivityRule.launchActivity(null); mActivityRule.getActivity(); } /** * All the clean up of application's data and state after each scenario must happen here */ @After public void tearDown() throws Exception { } @When("^I login with \"([^\"]*)\" and \"([^\"]*)\"$") public void i_login_with_and(String user, String password) throws Throwable { // Login... } 

    La function setUp viene eseguita prima di each scenario e avvierà l'attività.

    In tutto il mondo, se serve le tue esigenze, non vedo alcun problema ad usarlo così, entrambe le annotazioni del cetriolo e le annotazioni di JUnit possono essere analizzate in questo modo.

    Ho creato un progetto di esempio: github.com/Clutcha/EspressoCucumber

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.