2015-04-16 3 views
5

Wir haben unsere App von Grails 2.4.4 auf 2.5.0 aktualisiert. Alle funktionieren gut, aber einige Testfälle versagen, die einige private Methoden enthalten.Grails Spocktests mit privaten Methoden scheitern nach dem Upgrade auf 2.5.0

import org.junit.Before 

class UserServiceSpec extends IntegrationSpec { 

    @Before 
    def setup() { 
     // Some initialization 
    } 

    // being used in other test methods 
    private void getParams() { 
      // some code 
    } 

    void testUserUniqueEmali() { 
     when: "this runs" 
     // code 
     then: "hello" 
     // code 
    } 
} 

Exception geworfen:

java.lang.IllegalAccessException: Class org.spockframework.util.ReflectionUtil can not access a member of class com.test.UserServiceSpec with modifiers "private" 
    at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:153) 
    at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:84) 
    at org.junit.runners.Suite.runChild(Suite.java:128) 
    at org.junit.runners.Suite.runChild(Suite.java:27) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:115) 
    at _GrailsTest.run_closure1(_GrailsTest.groovy:102) 
    at TestApp.run_closure1(TestApp.groovy:32) 

I Abhängigkeitsbericht erstellt und hier sind einige Statistiken:

org.spockframework:spock-core:1.0-groovy-2.4 
org.codehaus.groovy:groovy-all:2.4.3 

Dies zeigt, dass neueste Version des Spock Framework verwendet wird, aber ich Ich bin nicht in der Lage, dieses Problem zu beheben. Ich habe versucht, "private" Modifier zu entfernen, aber es funktioniert immer noch nicht.

Antwort

7

Nach einer Untersuchung für einige Zeit habe ich das Problem, aber nicht die Ursache herausgefunden.

Grundsätzlich war diese @Before Annotation der Täter und aus irgendeinem Grund warf Spock-Test diesen Fehler. Durch das Entfernen dieser nicht verwendeten Anmerkung wurde mein Problem behoben.

Dies funktionierte in Grails 2.4.4 und beginnt in 2.5.0 zu versagen, möglicherweise aufgrund von Änderungen im Spock-Framework.

+0

Antwort von ZZ5 beschreibt, was vor sich geht –

1

Ich habe das gleiche Problem festgestellt. Um sie zu verhindern, benennen Sie einfach keine Methoden, die mit JUnits @Before oder @After wie Spocks Methoden notiert sind: Bereinigung und Einrichtung.

Verwandte Themen