2015-01-06 5 views
1

Я использую следующие зависимости:Spring Загрузочный тестовый класс обыкновение вводить бобы

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'idea' 
apply plugin: 'spring-boot' 
apply plugin: 'war' 

compile("com.caucho:resin-hessian:4.0.23") 
    compile("mysql:mysql-connector-java") 
    compile('org.springframework.boot:spring-boot-starter-web:1.2.0.RELEASE') 
    compile("org.springframework.boot:spring-boot-starter-batch:1.2.0.RELEASE") 
    compile("org.springframework.boot:spring-boot-starter-actuator") 
    compile("javax.inject:javax.inject:1") 
    compile('org.springframework.batch:spring-batch-admin-manager:1.3.0.RELEASE') { 
     exclude module: 'slf4j-log4j12' 
    } 
    //SI 
    compile("org.springframework.integration:spring-integration-core:$springIntegrationVersion") 
    testCompile('org.springframework.boot:spring-boot-starter-test:1.2.0.RELEASE') 

Создан новый тест класс:

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = Application.class) 
@WebAppConfiguration 
@IntegrationTest 
@ContextConfiguration(locations={"classpath:**/*.xml"}) 
@ComponentScan({"com.mycompany.notification.processor.service"}) 
public class DownloadFileTaskletTest { 

    @Autowired 
    private DownloadFileTasklet downloadFileTasklet; 

    @Test 
    public void execute() 
    { 
     System.out.printf("test123"); 

    } 
} 

Я создал тестовый случай внутри Spring ботинке Однако я получаю эту ошибку:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'batch.DownloadFileTaskletTest': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.mycompany.notification.processor.service.batch.tasks.DownloadFileTasklet batch.DownloadFileTaskletTest.downloadFileTasklet; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.mycompany.notification.processor.service.batch.tasks.DownloadFileTasklet] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 

Это мой класс приложения:

@ComponentScan({"com.mycompany.notification.processor.service"}) 
@EnableAutoConfiguration 
@Configuration 
@ImportResource({ 
     "classpath:integration-context.xml","classpath:launch-context.xml","classpath:applicationContext-NotificationProcessorService.xml" 
}) 
//@Import({ ServletConfiguration.class, WebappConfiguration.class }) 
public class Application { 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
     System.out.printf("hello man"); 
    } 

} 

Любая идея, почему я не могу вводить бобы в свой тестовый класс?

я удалил @ ContextConfiguration, @ ComponentScan, @ IntegrationTes, как предложил Теперь я вижу другое исключение:

java.lang.IllegalStateException: Failed to load ApplicationContext 
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99) 
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:122) 
    at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:160) 
    at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:101) 
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:321) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:284) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:157) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 
Caused by: java.lang.IllegalArgumentException: Cannot load an ApplicationContext with a NULL 'contextLoader'. Consider annotating your test class with @ContextConfiguration or @ContextHierarchy. 
    at org.springframework.util.Assert.notNull(Assert.java:112) 
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContextInternal(CacheAwareContextLoaderDelegate.java:57) 
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:91) 
    ... 28 more 
+0

Для начала удалите '@ ContextConfiguration' и' @ ComponentScan' из своего test clase, это не имеет смысла. Также '@ IntegrationTest' служит другой цели, поэтому я бы ожидал, что вам это не понадобится. –

+0

Готово. Я отредактировал свой вопрос и добавил новое исключение – rayman

+0

Имейте в виду, что у меня есть serverl applicationContext в моих ресурсах, которые мне нужно загрузить – rayman

ответ

8

просто удалить эту часть:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-test</artifactId> 
    <version>3.2.13.RELEASE</version> 
</dependency> 

вместо этого, с помощью этого:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
+0

Это было решение, которое мне было необходимо после выполнения этого руководства: http://spring.io/guides/tutorials/bookmarks/ –

Смежные вопросы