当前位置: 首页 > 知识库问答 >
问题:

显示groovy.lang.MissingPropertyException的Spock测试

公羊俭
2023-03-14

我有以下斯波克测试。我首先进入登录页面,然后单击登录按钮,而不输入电子邮件和密码来验证错误消息。我将添加其他步骤稍后,如电子邮件,但没有密码和电子邮件与不正确的密码,但我首先需要得到这个测试工作。

package loginPageTests

import Pages.loginPage
import geb.Page
import geb.spock.GebReportingSpec

class invalidLoginSpec extends GebReportingSpec {

    def "Go to login page"() {
        when:
        Page loginPage = to loginPage
        waitFor { loginPage.loginButton.isDisplayed() }

        then:
        at loginPage
    }

    def "Try to log in without email or password"() {
        when:
        loginPage.loginButton.click()

        then:
        at loginPage
        assert loginPage.loginError.text() == "Please enter your email and password."
    }
}

和下面的page对象

package Pages

import geb.Page

class loginPage extends Page {
    static url = 'login/'
    static at = { title == "Login to TB"}
    static content = {
        loginButton {$("#loginButton")}
        loginError(wait:true) {$("#loginError")}
    }
}

第一个方法成功运行,但当第二个方法尝试运行时,我得到了这个错误

Groovy.lang.MissingPropertyException:类:pages.loginPage没有这样的属性:loginButton

属性loginButton位于loginPage页面对象中,因此我不确定为什么会出现此错误。

共有1个答案

双元魁
2023-03-14

您与页面交互的方式是不地道的,但要回答所问的问题······

您已经将loginpage定义为第一个测试方法中的局部变量,然后尝试在第二个测试方法中引用它,因为它超出了范围。

 类似资料:
  • 一位同事最近在我们团队的项目中引入了Spock单元测试,我在其Eclipse集成方面遇到了一个恼人的问题:每当我们创建参数化测试并在其上使用@unroll注释时,Eclipse JUnit视图就会失去与测试类的关联,并在“unrot根测试”下显示结果。 例如,这个测试类的结果: 以这种方式显示: 如何让展开的测试用例(例如“展开的测试1”)像“未展开的测试”一样显示在“test.testsockt

  • 我的机器上安装了Sonarqube4.4。我正在尝试为一个grails(2.4.3)项目生成度量,该项目有用Spock框架编写的测试。然而,sonar并不显示单元测试结果或单元测试覆盖范围。 我验证了cobertura coverage.xml是在下面提供的路径中生成的 有人使用过类似的配置并能够使用sonarqube和Cobertura生成代码覆盖率度量吗?

  • 在我的应用程序中有,它有一个操作,如下所示: 现在,我正在测试视图和模型,如下所示: 但是我的测试用例失败了,stacktrace如下: 正在运行2个spock测试。。。第1页,共2页 有什么问题吗。

  • 我对斯波克很陌生,所以如果这是个愚蠢的问题,请原谅。我已经在基于Maven的Spock-Groovy项目中完成了报告设置,如下文git-hub project-https://github.com/renatoathaydes/spock-reports所述 我所做的是- > 将以下3个Mvn依赖项添加到我的POM: 将报表config.groovy添加到src/test/groovy路径,如下所

  • 我从实施了AdMobhttps://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start?hl=en_US其在测试期间运行良好。 我以为从Play商店下载时,此横幅添加将被实际广告替换,但这并没有发生! 如何让它发生? 我错过了什么吗? 我该怎么办?

  • 我从JUnit测试开始。 我正试图写一个简单的测试,却发现了这个问题。 当测试正常时,它显示在结果中:测试运行: 1,失败: 0,错误: 0,跳过: 0,时间流逝: 0.008秒 当我将一个1更改为0时,它应该失败:测试运行:0,失败:0,错误:0,跳过:0,经过的时间:0.008秒,它也不会抛出应该抛出的错误消息。 我是做错了什么,还是不应该这样?试图通过谷歌搜索,但找不到类似的问题。 我正在使