我不能将Kotlin用于Serenity-bdd

时间:2017-06-18 12:09:35

标签: kotlin serenity-bdd

我尝试使用kotlin进行我的测试,使用serenity-bed框架,但这不起作用 例如

public class EndUserSteps {

    var dictionaryPage: DictionaryPage = null!!

    @Step
    fun enters(keyword: String) {
        dictionaryPage.enter_keywords(keyword)
    }

    @Step
    fun starts_search() {
        dictionaryPage.lookup_terms()
    }

    @Step
    fun should_see_definition(definition: String) {
        assertThat(dictionaryPage.definitions, hasItem(containsString(definition)))
    }

    @Step
    fun is_the_home_page() {
        dictionaryPage.open()
    }

    @Step
    fun looks_for(term: String) {
        enters(term)
        starts_search()
    }
}

其他代码用Java编写!

输出: (net.serenitybdd.core.exceptions.StepInitialisationException:无法为EndUserSteps创建步骤库:无法继承最终类类ru.tinkoff.atesting.steps.serenity.EndUserSteps)

你可以帮帮我吗? 有什么想法吗?

1 个答案:

答案 0 :(得分:4)

在Kotlin课程中don't allow subclassing by default(相当于Java的final)。要允许子类化,您需要将它们标记为open。 (open class X

  

类的开放注释与Java的最终版本相反:它允许其他人继承此类。默认情况下,Kotlin中的所有类都是final,对应于Effective Java,第17项:继承的设计和文档,或者禁止它。 - Kotlin docs