maven - kotlin cucumber 的 Maven 依赖是什么?

标签 maven cucumber kotlin pom.xml

我想使用 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.kotlincucumber.api.java8.En:

missings

您还可以看到项目使用的实际依赖项列表:

dependencies

最佳答案

看起来 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/

相关文章:

cucumber - Karate API 测试 - 在功能文件的 url 中转义 '?'

kotlin - 如何在apache SshServer中设置每个用户的最大并发登录数

java - 我应该将单元测试期间创建的测试数据文件放在哪里?

java - 找不到 Maven 依赖项

java - 对主代码和测试代码使用antlr4-maven-plugin

java - 如何使用 Rest Assured 在同一 API 主体上发送 String[] 和 String 值?

file - Maven package 在 jar 包中打开一个文件(作为 *File*)

Cucumber 6.9 java8,无法从 DataTable 转换为自定义类型

java - 使用 MaterialDateTimePicker 选择时间 block

scala - JVM 语言中如何编译嵌套函数和词法作用域?