2012-01-24 25 views
5

Tôi yêu cầu trợ giúp vì tôi không biết phải làm gì với lỗi này ... Vì vậy, trước hết hãy để tôi hiển thị stacktrace tôi nhận được khi chạy thử nghiệm thực sự đơn giản của tôi, điều kỳ lạ là thử nghiệm của tôi dường như không được thực thi ...? Tôi đang sử dụng Grails 2,0Tôi không thể chạy thử nghiệm chức năng Grails đơn giản bằng Geb và 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 

Và đây các tập tin groovy:

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

nhờ

Trả lời

7

Các lớp học thử nghiệm của bạn phải kết thúc bằng Spec không phải Test. Nếu không Grails sẽ không nhận ra chúng là thông số kỹ thuật của Spock.

+1

có! Cảm ơn !! giải pháp là SO rõ ràng tôi không thể nhìn thấy nó :-) –

+0

Điều đó có nghĩa là tất cả các bài kiểm tra đơn vị trước đó của tôi phải được đổi tên thành somethingSpec? – raffian

+0

Không chắc chắn ý bạn là gì bởi "các bài kiểm tra đơn vị trước đây của tôi". * Các lớp thử nghiệm Spock * phải kết thúc bằng 'Spec'. Lưu ý rằng câu hỏi này dành riêng cho Grails. –

Các vấn đề liên quan