Estos pasos no son para tests de UI, si quieres correr tests de integracion con Cucumber te recomiendo usar Calabash.
- Crear un nuevo proyecto en Android Studio.
- Abrir build.gradle y agregar las dependencias:
androidTestCompile 'junit:junit:4.12' androidTestCompile group: 'info.cukes', name: 'cucumber-java', version: '1.2.2' androidTestCompile group: 'info.cukes', name: 'cucumber-core', version: '1.2.2' androidTestCompile group: 'info.cukes', name: 'cucumber-html', version: '0.2.3' androidTestCompile group: 'info.cukes', name: 'cucumber-jvm-deps', version: '1.0.3' androidTestCompile group: 'info.cukes', name: 'gherkin', version: '2.12.2' androidTestCompile 'info.cukes:cucumber-android:1.2.0@jar' androidTestCompile group: 'info.cukes', name: 'cucumber-junit', version: '1.2.2'
deben ser exactamente estos números de version. Las últimas versiones de Cucumber están compiladas con java 8, lo que no es soportado por android (por ahora)
- Necesitamos configurar en gradle que los tests sean ejecutados por Cucumber. Para eso hay que agregar en build.gradle el instrumentation runner, dentro de defaultConfig
defaultConfig { applicationId "my.application.package" minSdkVersion 14 targetSdkVersion 24 versionCode 1 versionName "1.0" testInstrumentationRunner "cucumber.api.android.CucumberInstrumentation" }
- Crea una nueva carpeta dentro de assets para los features de Cucumber en src/androidTest/assets
- Gradle no sabe nada de esta nueva carpeta con los features. Hay que configurar esta carpeta para que Cucumber pueda leer los features y ejecutarlos. Por ej. debajo de defaultConfig
defaultConfig { ... } sourceSets { androidTest { assets.srcDirs = ['src/androidTest/assets'] } }
- Crear una nueva carpeta llamada "features" dentro de la carpeta de assets. Todos los archivos de features van a guardarse aquí (se puede usar subfolders). Acá un ejemplo de un feature que debe ir en un archivo en esta carpeta:
Feature: Calculator Scenario Outline: a simple sum Given I have numbers 2 and 3 When I sum Then the result is 5
- Este paso es muy importante. Crea tus tests en el subpaquete "test" de tu paquete principal, por ejemplo my.application.package.test
Ejemplo de un test para el feature anterior:@CucumberOptions(features = "features") public class CalculatorFeatureTest { private int mNum1; private int mNum2; private int mResult; @Given("^I have numbers (-*\\d+) and (-*\\d+)$") public void i_have_numbers_and(int n1, int n2) throws Throwable { mNum1 = n1; mNum2 = n2; } @When("^I sum$") public void i_sum() throws Throwable { mResult = mNum1 + mNum2; } @Then("^the result is (-*\\d+)$") public void the_result_is(int result) throws Throwable { assertEquals(mResult, result); } }
La annotation @CucumberOptions especifica la carpeta adentro de assets, en este caso "features"
- En Android Studio, click derecho en el paquete con los tests, y elegir "Ejecutar tests en ..."
- Listo
Estos pasos están basados en los pasos descriptos en http://mdzyuba.blogspot.nl/2015/01/cucumber-jvm-and-android-studio.html
No hay comentarios:
Publicar un comentario