2012-01-24 20 views
5

Proszę o pomoc, ponieważ nie wiem, co zrobić z tym błędem ... Po pierwsze pozwól mi pokazać stacktrace, które dostaję kiedy przeprowadzam mój naprawdę prosty test, co jest dziwne, że mój test nie wydaje się być wykonany ...? Używam Grails 2.0Nie mogę uruchomić prostego testu funkcjonalnego Grails przy użyciu Geb i spock

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 

a tu porywające plików:

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 = { 
    } 
} 

dzięki

Odpowiedz

7

Twoje klasy testowe muszą kończyć się Spec, a nie Test. W przeciwnym razie Grails nie rozpozna ich jako specyfikacji Spocka.

+1

tak! Dzięki !! rozwiązanie było tak oczywiste, że nie mogłem go zobaczyć :-) –

+0

Czy to oznacza, że ​​wszystkie moje poprzednie testy jednostek musiały zostać przemianowane na coś SpecSpec? – raffian

+0

Nie wiesz, co masz na myśli przez "moje poprzednie testy jednostkowe". * Klasy testowe Spocka * muszą kończyć się w 'Spec'. Zauważ, że to pytanie jest specyficzne dla Grails. –