我一直在尝试用Geb/Spock来测试一些web应用程序,但遇到了一个我似乎无法解决的问题。
class TestThisPage extends AuthenticationSpec {
def setupSpec() {
loginComplete("some user ID", "some password")
assert page instanceof ThisPage
}
def "Verify some link's text is correct"() {
when: "The user is at this page"
then: "The this specific link's text is correct"
assert someLink.text().equalsIgnoreCase("I am some text")
}
def "Verify that the correct user name is displayed"() {
when: "The user is signed in and at this page"
then: "The signed-in user's display name appears correctly on the page"
assert signInText.equalsIgnoreCase("Signed in as: some user ID")
}
def "Verify this page's copyright"() {
when: "The user is redirected to this page"
then: "The copyright is correct"
assert legalInfo.text().trim().equalsIgnoreCase("Some copyright text here")
}
}
class ThisPage extends Page {
static at = {
title == "This page"
}
static content = {
someLink(to: SomeOtherPage) {$("a[href='someOtherPage.jsp'")}
signInText {loginInfo.find("#static-label").text().trim()}
}
}
唯一的方法就是在when或given块中添加atthispage
。我想在每个测试方法中显式地将页面设置为ThisPage是有意义的,但是为什么当整个类作为测试套件运行时,只有第一个测试方法通过(即使没有ThisPage处的)?
每个后续测试方法都不知道您所处的页面。
您可以创建页面的共享实例,然后您的每个测试都可以在相同的规范中访问该实例:
class TestThisPage extends AuthenticationSpec {
@Shared ThisPage thisPage
def setupSpec() {
thisPage = loginComplete("some user ID", "some password")
assert page instanceof ThisPage
}
def "Verify some link's text is correct"() {
when: "The user is at this page"
then: "The this specific link's text is correct"
assert thisPage.someLink.text().equalsIgnoreCase("I am some text")
}
def "Verify that the correct user name is displayed"() {
when: "The user is signed in and at this page"
then: "The signed-in user's display name appears correctly on the page"
assert thisPage.signInText.equalsIgnoreCase("Signed in as: some user ID")
}
def "Verify this page's copyright"() {
when: "The user is redirected to this page"
then: "The copyright is correct"
assert thisPage.legalInfo.text().trim().equalsIgnoreCase("Some copyright text here")
}
}
完成了818个集成测试,0在104001ms运行1个spock测试时失败...失败:CreditServiceSpec groovy.lang.groovyRuntimeException:未能调用构造函数:public org.codehaus.groovy.grails.test.support.grailstestautoWirer(org.springframework.context.a
我试图创建一个测试套件,在套件开始时运行Spring Boot一次。我的工作原理是,每个测试用例都有@SpringBootTest,但我只希望在测试套件中有@SpringBootTest。 我确实看到了这个,但没有提到“RunWith Suite”。班
在我的应用程序中有,它有一个操作,如下所示: 现在,我正在测试视图和模型,如下所示: 但是我的测试用例失败了,stacktrace如下: 正在运行2个spock测试。。。第1页,共2页 有什么问题吗。
我正在运行一个TestNG套件,在同一个类中有3个测试。问题是,当我打开Allure报告(使用jetty服务器)时,我可以看到里面有两个同名和相同内容的套件。每个套房之间只有2个差异。 套件2总是在套件1之后1秒完成。 我使用3个不同的线程在3个设备上进行并行执行。如果套件具有线程顺序1、2、3,那么套件2将具有顺序1、3、2(与套件1相比)
在以前的一个项目中,我使用Spock测试框架对Java代码进行单元测试。我发现这非常有效,所以我尝试将Spock测试添加到我当前的项目中,该项目使用Maven作为构建工具(前一个项目使用Gradle)。虽然我可以让Maven编译我的Spock测试(使用),但我无法让Maven运行这些测试。 我做了一个简单的例子来演示我在两个文件中的问题: null 当我执行(或)时,我希望运行单个单元测试并失败。