Как сделать так, чтобы функции Cucumber запускались в проекте Android как локальные юнит-тесты? - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть проект Android, написанный на Java, над которым я работаю в Android Studio.

Я бы хотел использовать Cucumber для интеграционного тестирования некоторых внутренних компонентов (примечание: я знаю, что это не BDD-способ, тем не менее полезный для меня). Я хочу, чтобы тесты выполнялись как локальные модульные тесты (без инструментария) с использованием gradlew test, поскольку тестируемые компоненты не взаимодействуют с Android SDK.

Моя проблема в том, что функции огурца не распознаются Gradle и не запускаются при запуске gradlew test.

Вот как я это настроил:

  1. Добавлены эти зависимости в build.gradle моего приложения:

    testImplementation 'io.cucumber:cucumber-java:3.0.2'
    testImplementation 'io.cucumber:cucumber-junit:3.0.2'
    testImplementation 'io.cucumber:cucumber-jvm:3.0.2'
    
  2. Также там я добавил путь туда, куда я положил свой файл Feature:

    android {
        ...
        sourceSets {
            test {
                assets.srcDirs = ['src/test/java/integrationTest/assets']
            }
        }
    }
    

    Это основано на этой структуре папок:

    enter image description here

  3. Добавлен класс для шагов (Steps1.java), как видно выше.

Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Я узнал, как настроить приложение Android для запуска моих тестов Cucumber как «локальных модульных тестов», когда я запускаю gradlew test из командной строки.Это основано на моем ТАКом вопросе , и я написал пост в блоге "HOWTO" об этом здесь: Android: запускать тесты Cucumber без устройства или эмулятора .

Ключ к выполнению - в файле build.gradle приложения.Зацепившись за крючок unitTests.all в секции testOptions, я могу запустить Cucumber, используя javaexec, например, так:

android {
    ...
    testOptions {
        unitTests.all {
            def classpath2 = getClasspath()
            javaexec {
                main = "cucumber.api.cli.Main"
                classpath = classpath2
                args = ['--plugin', 'pretty', '--glue', 'gradle.cucumber', 'src/test/java/cucumber/assets']
            }
        }
    }
)
0 голосов
/ 15 сентября 2018

Ваши файлы функций, вероятно, не подобраны, потому что вы не включили бегуна. Вы можете создать JUnit Runner или использовать плагин Gradle для огурцов . Я не уверен, что любой из них будет работать в Android.

Также вам не нужно io.cucumber:cucumber-jvm:3.0.2 в качестве зависимости. Это только пом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...