【问题标题】:What maven dependency for kotlin cucumber?kotlin 黄瓜的 Maven 依赖项是什么?
【发布时间】:2019-06-08 19:10:11
【问题描述】:

我想使用 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

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

【问题讨论】:

    标签: maven cucumber kotlin pom.xml


    【解决方案1】:

    看起来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") {
            ...
        }
    }
    

    【讨论】:

    • 不,不是这样。我更新了Q中的信息
    • 没有工件 cucumber-kotlin-java8,因为 Cucumber 没有“特殊”的 Kotlin 类。正如他们的文档中所述:“您可以直接在 Kotlin 中使用 cucumber-javacucumber-java8。”此外,cucumber.runtime.kotlin.test 包似乎是你的:package cucumber.runtime.kotlin.test; 在第一个文件中。然后您尝试将其导入SomeStepDefsThe example you've posted 在 IDE 中导入时完美运行。
    【解决方案2】:

    &lt;artifactId&gt;cucumber-jvm&lt;/artifactId&gt; 更改为 &lt;artifactId&gt;cucumber-java8&lt;/artifactId&gt; 以使用 lambda 样式定义。

    请注意,目前没有黄瓜的本机 Kotlin 实现。

    另外,您所指的cucumber-kotlin-java8 是如何将 Cucumber-java8 与 Kotlin 一起使用的示例。

    此外,您还需要扩展En 接口。

    【讨论】:

      猜你喜欢
      • 2015-04-13
      • 2012-03-10
      • 1970-01-01
      • 2017-06-03
      • 2019-03-10
      • 2017-11-11
      • 2011-09-14
      • 1970-01-01
      • 2015-05-15
      相关资源
      最近更新 更多