我想使用 kotlin 原生步骤定义 like :
package cucumber.runtime.kotlin.test;
...
class LambdaStepdefs : En {
init {
Before { scenario: Scenario ->
assertNotSame(this, lastInstance)
lastInstance = this
}
Given("^this data table:$") { peopleTable: DataTable ->
val people = peopleTable.asList(Person::class.java)
assertEquals("Aslak", people[0].first)
assertEquals("Hellesøy", people[0].last)
}
其中Given
采用函数而不是注释。我不想使用像 @Given("blabla") void blabla() { ... }
这样的 Java 风格。
我尝试从示例中导入包:
package vc.capper.cutest;
import cucumber.runtime.kotlin.test
class SomeStepDefs
{
Given("blabla") {
}
}
但是在cucumber.runtime
中找不到kotlin
包。
我认为io.cucumber:cucumber-jvm
( Artifact )[https://github.com/cucumber/cucumber-jvm/blob/master/pom.xml]附带了cucumber-kotlin-java8
,但它要么没有,要么不包含所说的Given
。
这是我的 pom.xml
的摘录——我猜缺少了一些东西,但是什么呢?
前奏:
<properties>
<java.version>1.8</java.version>
<kotlin.version>1.1.2-2</kotlin.version>
<spring-boot.version>1.5.7.RELEASE</spring-boot.version>
<cucumber.version>2.0.1</cucumber.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
...
</dependencyManagement>
依赖关系:
<dependencies>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-jvm</artifactId>
<version>${cucumber.version}</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-spring</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jre8</artifactId>
<version>${kotlin.version}</version>
</dependency>
...
</dependencies>
更新和说明:
从 IntelliJ 屏幕截图中可以看到,似乎缺少的软件包是 cucumber.runtime.kotlin
和 cucumber.api.java8.En
:
您还可以看到项目使用的实际依赖项列表:
最佳答案
看起来 Given
不是 Kotlin 特定的 DSL/方法。它是 cucumber.api.java8.En 的一部分。您所要做的就是从中扩展您的类:
package vc.capper.cutest;
import cucumber.runtime.kotlin.test
import cucumber.api.java8.En
class SomeStepDefs : En {
Given("blabla") {
...
}
}
关于maven - kotlin cucumber 的 Maven 依赖是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46896866/