2017-09-04 145 views
0

我一直在尝试写,我写了一个小弹簧的启动项目,但由于某种原因,集成测试似乎无法获得集成测试工作。这就是我要做的:春季启动集成测试

package au.azzmosphere.integration; 


import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.boot.test.context.SpringBootTest; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringBootTest(classes = {IntegrationTestConfiguration.class}) 
public class TestIntegration1 { 
    @Test 
    public void testDummy() { 

    } 
} 

配置类有以下几点:

package au.azzmosphere.integration; 

import au.azzmosphere.configuration.RobotAppConfig; 
import org.springframework.context.annotation.Configuration; 

@Configuration 
public class IntegrationTestConfiguration extends RobotAppConfig { 
} 

代码始终得到以下错误,当我尝试从的IntelliJ

运行集成测试
14:54:01.537 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class au.azzmosphere.integration.TestIntegration1]. 
14:54:01.542 [main] INFO org.springframework.test.context.TestContext - @ContextConfiguration not found for class [class au.azzmosphere.integration.TestIntegration1]. 
14:54:01.549 [main] INFO org.springframework.test.context.TestContextManager - @TestExecutionListeners is not present for class [class au.azzmosphere.integration.TestIntegration1]: using defaults. 

从gradle这个返回以下

au.azzmosphere.integration.TestIntegration1 > initializationError FAILED 
    java.lang.NoClassDefFoundError 
     Caused by: java.lang.ClassNotFoundException 

完整的堆栈跟踪

java.lang.NoClassDefFoundError: org/springframework/transaction/TransactionDefinition 

    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) 
    at java.lang.Class.getConstructor0(Class.java:3075) 
    at java.lang.Class.getDeclaredConstructor(Class.java:2178) 
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:102) 
    at org.springframework.test.context.TestContextManager.retrieveTestExecutionListeners(TestContextManager.java:171) 
    at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:108) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:107) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:79) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49) 
    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) 
Caused by: java.lang.ClassNotFoundException: org.springframework.transaction.TransactionDefinition 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 23 more 
+0

你能粘贴fulll堆栈跟踪吗?哪些课程没有找到? – JRR

+0

我已经将完整的堆栈跟踪添加到答案,希望它有帮助。 –

+0

CHeck this https://www.mkyong.com/spring/java-lang-classnotfoundexception-org-springframework-transaction-transactionexception/ – gladiator

回答

0

工作了,:)问题是,我没有任何TransactionDefinition的定义,因为我没有使用它。默认的SpringBoot批注尝试注入它。答案是使用@TestExecutionListeners({DependencyInjectionTestExecutionListener.class}),它覆盖了默认值并让事情顺利进行。