Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I can't run a simple Grails functional test using Geb and spock

I'm asking for help because I don't know what to do with this error... So first of all let me show the stacktrace I get when running my really simple test, what is weird is that my test doesn't seem to be executed ... ? I'm using Grails 2.0

Configuring Spring Security Core ...
... finished configuring Spring Security Core
| Server running. Browse to http://localhost:8080/
| Running 3 functional tests... 1 of 0
| Failure:  initializationError(SecondaryTest)
|  java.lang.Exception: No runnable methods
    at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:166)
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:102)
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:344)
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:74)
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:55)
| Running 3 functional tests... 2 of 0
| Failure:  initializationError(SecondaryTest)
|  java.lang.Exception: The @Rule '_gebReportingSpecTestName' must be public.

    at org.junit.internal.runners.rules.RuleFieldValidator.addError(RuleFieldValidator.java:90)
    at org.junit.internal.runners.rules.RuleFieldValidator.validatePublic(RuleFieldValidator.java:67)
    at org.junit.internal.runners.rules.RuleFieldValidator.validateField(RuleFieldValidator.java:55)
    at org.junit.internal.runners.rules.RuleFieldValidator.validate(RuleFieldValidator.java:50)
    at org.junit.runners.BlockJUnit4ClassRunner.validateFields(BlockJUnit4ClassRunner.java:170)
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:103)
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:344)
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:74)
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:55)
| Running 3 functional tests... 3 of 0
| Failure:  initializationError(SecondaryTest)
|  java.lang.Exception: The @Rule '_gebReportingSpecTestName' must implement MethodRule or TestRule.
    at org.junit.internal.runners.rules.RuleFieldValidator.addError(RuleFieldValidator.java:90)
    at org.junit.internal.runners.rules.RuleFieldValidator.validateTestRuleOrMethodRule(RuleFieldValidator.java:73)
    at org.junit.internal.runners.rules.RuleFieldValidator.validateField(RuleFieldValidator.java:56)
    at org.junit.internal.runners.rules.RuleFieldValidator.validate(RuleFieldValidator.java:50)
    at org.junit.runners.BlockJUnit4ClassRunner.validateFields(BlockJUnit4ClassRunner.java:170)
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:103)
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:344)
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:74)
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:55)
| Completed 3 functional tests, 3 failed in 40ms
| Server stopped
| Tests FAILED  - view reports in target/test-reports

And here the groovy files :

SecondaryTest.groovy :

import pages.SignInPage
import geb.spock.GebReportingSpec

class SecondaryTest extends GebReportingSpec {

    String getBaseUrl() { "http://localhost:8080/" }

    File getReportDir() { new File("target/reports/geb") }

    def "I am at siginin page"() {
        when:
        to SignInPage

        then:
        true
    }
}

SignInPage.groovy :

package pages

import geb.Page

class SignInPage extends Page {

    static url = "login/auth"

    static at = { title == "Sign in" }

    static content = {
    }
}

thanks

like image 728
Jean-Baptiste Avatar asked Jan 24 '12 11:01

Jean-Baptiste


1 Answers

Your test classes must end in Spec not Test. Otherwise Grails won't recognize them as Spock specifications.

like image 100
Peter Niederwieser Avatar answered Nov 15 '22 03:11

Peter Niederwieser