2012-01-24 1 views
5

이 오류와 관련하여 잘 모르기 때문에 도움을 요청하고 있습니다 ... 우선 내가 얻은 스택 트레이스를 보여 드리겠습니다. 내 간단한 테스트를 실행할 때 이상한 것은 내 테스트가 실행되지 않는 것입니다 ...? 내가 여기서 끝내 파일Geb 및 spock을 사용하여 간단한 Grails 기능 테스트를 실행할 수 없습니다.

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 

그리고 Grails는 2.0 사용하고 있습니다 :

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

감사

답변

7

테스트 클래스는 Spec이 아니고 Test으로 끝나야합니다. 그렇지 않으면 Grails는 Spock 사양으로 인식하지 못합니다.

+1

예! 감사 !! 해결책이 너무 분명해서 나는 그것을 볼 수 없었습니다 :-) –

+0

이전의 모든 단위 테스트를 somethingSpec으로 이름을 바꿔야한다는 의미입니까? – raffian

+0

"이전의 단위 테스트"가 의미하는 바가 확실하지 않습니다. * Spock 테스트 클래스는 * Spec에서 끝나야합니다. 이 질문은 Grails에만 해당됩니다. –

관련 문제