使用Geb / Spock记录失败测试时的自定义消息?

时间:2017-02-08 09:13:25

标签: spock geb

我正忙于在Geb / Spock中进行e2e测试,我想知道如何添加自定义消息。 现在我只得到这样的堆栈跟踪:

geb.error.RequiredPageContentNotPresent: The required page content 'pages.patientConversation.PcModal -> contact: geb.navigator.EmptyNavigator' is not present
    at geb.content.TemplateDerivedPageContent.require(TemplateDerivedPageContent.groovy:60)
    at geb.content.PageContentTemplate.create_closure1(PageContentTemplate.groovy:63)
    at geb.content.PageContentTemplate.create_closure1(PageContentTemplate.groovy)
等等......

这是我测试的一个例子:

 def "allow for searching contacts"() {
    when:
    to LoginPage
    login(emailAddress, defaultPassword)
    then:
    at QuickBar
    when:
    startButton.click()
    then:
    at Modal
    when:
    selectContactButton.click()
    contactSearchField.value(context.pcUser2.surname)
    then: "the contact is shown in the search results"
    contact.isDisplayed()
}

我认为文本“联系人显示在搜索结果中”会出现在错误消息中,但显然不会。是否可能有另一种方式在Spock的Geb中打印自定义消息以获得更清晰的信息?

特别是对于'在跳棋'我想要自定义消息,因为当检查失败时,你只会得到:

java.lang.NoSuchMethodError: geb.error.GebAssertionError.<init>(Ljava/lang/Object;Ljava/lang/Throwable;)V

at geb.waiting.WaitTimeoutException.<init>

编辑: 嗯,我现在意识到,测试失败了,因为它还会在执行“then”之前检查所需的页面内容。我仍然希望能够添加自定义消息(特别是对于'在西洋跳棋')...有人知道这是否可能?

1 个答案:

答案 0 :(得分:7)

您可以使用custom-messageWaitTimeoutException

添加自定义消息
class HomePage extends Page {

    static at = {
        waitFor(message:"My custom message")    {title == "Acme Corporation"}
        waitFor(message:"My custom message",20) {$("#roadRunner")}
    }
}