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
tak! Dzięki !! rozwiązanie było tak oczywiste, że nie mogłem go zobaczyć :-) –
Czy to oznacza, że wszystkie moje poprzednie testy jednostek musiały zostać przemianowane na coś SpecSpec? – raffian
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. –