Модуль пружины Спока приводит к NoSuchMethodError при запуске теста - PullRequest
0 голосов
/ 06 июня 2018

Я использую следующую зависимость от спока

 <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>1.0-groovy-2.4</version>
        <scope>test</scope>
 </dependency>

Я написал этот тест

class JsonIncludeResolverTest extends Specification {
    JsonIncludeResolver uut;
    def "test"(){
       expect:
       true
    }
}

тест пройден успешно

Теперь я хочуиспользовать Spring для внедрения JsonIncludeResolver в спецификации.JsonIncludeResolver помечен @Component и успешно введен при запуске приложения.Оба теста и компонент находятся в одном и том же модуле maven.

Я читал о spring-spock здесь: Как ввести пружинные бобы в тест спока

Поэтому я добавил этоверсия зависимости

<dependency>
      <groupId>org.spockframework</groupId>
      <artifactId>spock-spring</artifactId>
      <version>1.1-groovy-2.4</version>
      <scope>test</scope>
</dependency>

после добавления этой зависимости запустив s

Exception in thread "main" java.lang.NoSuchMethodError: org.spockframework.util.ReflectionUtil.isAnnotationPresentRecursive(Ljava/lang/Class;Ljava/lang/Class;)Z
at org.spockframework.spring.SpringExtension.isSpringSpec(SpringExtension.java:83)
at org.spockframework.spring.SpringExtension.visitSpec(SpringExtension.java:59)
at org.spockframework.runtime.ExtensionRunner.runGlobalExtensions(ExtensionRunner.java:46)
at org.spockframework.runtime.ExtensionRunner.run(ExtensionRunner.java:40)
at org.spockframework.runtime.Sputnik.runExtensionsIfNecessary(Sputnik.java:88)
at org.spockframework.runtime.Sputnik.getDescription(Sputnik.java:55)
at com.intellij.junit4.JUnit4IdeaTestRunner.getDescription(JUnit4IdeaTestRunner.java:78)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:50)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

Затем я попытался использовать правильные аннотации

@ContextConfiguration
class JsonIncludeResolverTest extends Specification {
    @Autowired
    JsonIncludeResolver uut;
    def "test"(){
       expect:
       uut != null
    }
}

Тем не менее, результат вышеисключение.

Groovy-тест находится под /src/test/groovy, что является работой, которую вы могли видеть при первом успешном запуске теста.

1 Ответ

0 голосов
/ 08 июня 2018

Попробуйте обновить Spock до версии 1.1 следующим образом:

 <dependency>
        <groupId>org.spockframework</groupId>
        <artifactId>spock-core</artifactId>
        <version>1.1-groovy-2.4</version>
        <scope>test</scope>
 </dependency>

org.spockframework.util.ReflectionUtil.isAnnotationPresentRecursive() введено с версии 1.1 этим коммитом .

...