我有一个用Java编写的Android项目,我正在Android Studio中工作。
我想使用Cucumber对一些内部组件进行集成测试(注意:我知道这不是BDD的方式,但对我有用)。我希望使用gradlew test
作为local unit tests(不带Instrumentation)运行测试,因为被测组件不与Android SDK交互。
我的问题是Gradle无法识别Cucumber功能,并且在运行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'
字符串
1.另外,我还添加了路径,我把我的功能文件:
android {
...
sourceSets {
test {
assets.srcDirs = ['src/test/java/integrationTest/assets']
}
}
}
型
这基于以下文件夹结构:
的数据
1.为步骤(Steps1.java
)添加了一个类,如上所示。
我错过了什么?
3条答案
按热度按时间von4xj4u1#
您的功能文件可能不会被拾取,因为您没有包括跑步者。您可以创建JUnit Runner或使用Gradle cucumber plugin。我不确定这两种方式是否适用于Android。
你也不需要
io.cucumber:cucumber-jvm:3.0.2
作为依赖项。这只是一个pom。djp7away2#
我已经发现了如何配置我的Android应用程序,以便在从命令行运行
gradlew test
时将Cucumber测试作为“本地单元测试”运行。这是基于我的SO question here,我写了一篇关于它的“HOWTO”博客文章:Android: Run Cucumber tests without a device or an emulator。完成此操作的关键在应用程序的
build.gradle
文件中。通过锁定testOptions
部分中的unitTests.all
钩子,我可以使用javaexec
运行Cucumber,如下所示:字符串
mctunoxg3#
或者还有另一种方法直接从自定义运行器运行android单元测试。这是KotlinAndroid项目最简单的方法。
在我的应用级build.gradle中
字符串
然后,如下图所示,我设法通过CucumberTestRunner绿色运行箭头运行了一个 cucumber 场景。
x1c 0d1x的数据
源代码示例
对于任意实体数据类UserEntity.kt,
型
我首先创建了一个名为UserEntityBdd.feature的特性文件,
型
然后,对应的步骤定义文件名为UserEntityStepDefinitions.kt,
型
最后是CuccumberCustomRunner,名为CucumberTestRunner.kt,作为
型
这样做使我不需要将groovy snippet下面的/port转换为kts
型