代码之家  ›  专栏  ›  技术社区  ›  urig

如何让Cucumber特性作为本地单元测试在Android项目中运行?

  •  1
  • urig  · 技术社区  · 6 年前

    我有一个用Java编写的Android项目,我正在Android工作室工作。

    local unit tests (无仪器)使用 gradlew test 因为被测试的组件不与androidsdk交互。

    我的问题是Gradle无法识别Cucumber特性,并且在运行时不会运行 .

    1. 已将这些依赖项添加到我的应用程序的构建.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. 此外,我还添加了放置功能文件的路径:

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

      这基于此文件夹结构:

      enter image description here

    3. 为步骤添加了一个类( Steps1.java

    我错过了什么?

    2 回复  |  直到 6 年前
        1
  •  1
  •   M.P. Korstanje    6 年前

    JUnit Runner 或者使用 Gradle cucumber plugin . 不过,我不确定这两个版本是否可以在Android上运行。

    你也不需要 io.cucumber:cucumber-jvm:3.0.2 作为一种依赖。它只是一个pom。

        2
  •  0
  •   urig    6 年前

    我已经知道了如何配置我的Android应用程序,以便在运行时将Cucumber测试作为“本地单元测试”运行 gradlew test 从命令行。这是基于我的 SO question here 我在这里写了一篇“如何”的博文: Android: Run Cucumber tests without a device or an emulator .

    build.gradle 文件。通过锁定到 unitTests.all 钩住 testOptions 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']
                }
            }
        }
    )