Получение java.lang.IllegalStateException: не удалось загрузить исключение CacheAwareContextLoaderDelegate при выполнении тестов Cucumber с пружинами - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь интегрировать тесты cucumebr с Springs. Я создал класс с именем MyClass в пакете actions с аннотацией Spring @Component

package actions;
import org.springframework.stereotype.Component;

@Component
public class MyClass{
public void printSomething(){
    System.out.println("Print this);
}

Создан AppConfig класс с аннотацией Spring @ComponentScan. И передал созданный выше пакет (actions) в @ComponentScan

import org.springframework.context.annotation.ComponentScan;

@ComponentScan(basePackages = {"actions"})
public class AppConfig {

}

В моем gluecode я инициализировал MyClass Используя @Autowired

@ContextConfiguration(classes=AppConfig.class)
public StepDefinitions implements En{

    @Autowired private MyClass myClass;

    public StepDefinitions(){   
        Before(() -> {
            myClass.printSomething();           
        });

Ниже приведен мой тест на огурец runenr класс

import org.springframework.test.context.ContextConfiguration;

@RunWith(Cucumber.class)
@CucumberOptions(
              features = "myfeature.feature"
              ,glue={"stepDefinitions"}
              )
@ContextConfiguration(classes=AppConfig.class)
public class TestRunner{

}

Когда я запускаю TestRunner в качестве теста junit, выдает следующее сообщение об ошибке junit.

java.lang.IllegalStateException: Could not load CacheAwareContextLoaderDelegate [class org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]
    at org.springframework.test.context.BootstrapUtils.createCacheAwareContextLoaderDelegate(BootstrapUtils.java:103)
    at org.springframework.test.context.BootstrapUtils.createBootstrapContext(BootstrapUtils.java:72)
    at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:124)
    at cucumber.runtime.java.spring.CucumberTestContextManager.<init>(SpringFactory.java:206)
    at cucumber.runtime.java.spring.SpringFactory.start(SpringFactory.java:102)
    at cucumber.runtime.java.JavaBackend.buildWorld(JavaBackend.java:123)
    at cucumber.runtime.Runtime.buildBackendWorlds(Runtime.java:141)
    at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:38)
    at cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:102)
    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
    at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
    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 cucumber.runtime.junit.FeatureRunner.run(FeatureRunner.java:70)
    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:95)
    at cucumber.api.junit.Cucumber.runChild(Cucumber.java:38)
    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 cucumber.api.junit.Cucumber.run(Cucumber.java:100)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:539)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:761)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:461)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:207)
Caused by: java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object;
    at org.springframework.test.context.BootstrapUtils.createCacheAwareContextLoaderDelegate(BootstrapUtils.java:100)
    ... 32 more

и печать консоли затмения ниже сообщения

[DEBUG] Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]

Я использую gradle в качестве инструмента для сборки. Ниже приведен список зависимостей, которые я добавил

compile group: 'org.springframework', name: 'spring', version: '2.5.6'
    compile group: 'org.springframework', name: 'spring-aop', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-aspects', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-beans', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-context', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-context-support', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-core', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-expression', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-instrument', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-instrument-tomcat', version: '4.3.18.RELEASE'
    compile group: 'org.springframework', name: 'spring-jdbc', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-jms', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-messaging', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-orm', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-oxm', version: '5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-test', version:'5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-tx', version:'5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-web', version:'5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc', version:'5.0.7.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc-portlet', version: '4.3.18.RELEASE'

Может кто-нибудь сказать мне проблему, вызвавшую исключение. Существуют ли какие-либо зависимости , которые мне нужно включить, или есть какой-либо конкретный бегун , который я должен использовать для вызова cucumber-junit в источниках, отличных от Cucumber.class

1 Ответ

0 голосов
/ 16 августа 2018

Удаление нежелательных зависимостей из сборки Gradle решило проблему для меня. В коде нет ничего плохого.

Только что добавил ниже зависимости и удалил все.

compile group: 'org.springframework', name: 'spring-context', version: '5.0.7.RELEASE'
compile group: 'org.springframework', name: 'spring-core', version: '5.0.7.RELEASE'
compile group: 'org.springframework', name: 'spring-test', version:'5.0.7.RELEASE'
compile group: 'org.springframework', name: 'spring-tx', version:'5.0.7.RELEASE'
...