000*_*000 12 testing spring spring-mvc springjunit4classrunner
为什么我的弹簧测试设置失败,下面没有如此有用的错误消息?所有建议表示赞赏.
JUnit输出
java.lang.NoClassDefFoundError: org/junit/runners/model/MultipleFailureException
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.withAfterClasses(SpringJUnit4ClassRunner.java:188)
at org.junit.runners.ParentRunner.classBlock(ParentRunner.java:145)
at org.junit.runners.ParentRunner.run(ParentRunner.java:235)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run (SpringJUnit4ClassRunner.java:163)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.ClassNotFoundException: org.junit.runners.model.MultipleFailureException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 10 more
Run Code Online (Sandbox Code Playgroud)
控制台输出
INFO:org.springframework.test.context.support.DefaultTestContextBootstrapper - 从位置[META-INF/spring.factories]加载默认的TestExecutionListener类名:[org.springframework.test.context.web.ServletTestExecutionListener,org.springframework.test. context.support.DependencyInjectionTestExecutionListener,org.springframework.test.context.support.DirtiesContextTestExecutionListener,org.springframework.test.context.transaction.TransactionalTestExecutionListener,org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener] INFO:org.springframework.test. context.support.DefaultTestContextBootstrapper - 无法实例化TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener].指定自定义侦听器类或使默认侦听器类(及其所需的依赖项)可用.违规类:[org/springframework/transaction/interceptor/TransactionAttribute] INFO:org.springframework.test.context.support.DefaultTestContextBootstrapper - 无法实例化TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener].指定自定义侦听器类或使默认侦听器类(及其所需的依赖项)可用.违规类:[org/springframework/transaction/interceptor/TransactionAttributeSource] INFO:org.springframework.test.context.support.DefaultTestContextBootstrapper - 使用TestExecutionListeners:[org.springframework.test.context.web.ServletTestExecutionListener@76959acc,org.springframework. test.context.support.DependencyInjectionTestExecutionListener@57e603e6,org.springframework.test.context.support.DirtiesContextTestExecutionListener@3e0a1e1f]
这是目标片段
@Service
public class PipApps {
@Resource( name = "apps" )
private Properties apps;
@Autowired
private SitePreferenceHandler sitePreferenceHandler;
@Autowired
private PipsTable pipsTable;
private SitePreference sitePreference;
private Device device;
public PipApps( HttpServletRequest request, HttpServletResponse response ){
sitePreference = sitePreferenceHandler.handleSitePreference( request, response );
device = DeviceUtils.getRequiredCurrentDevice( request );
}
public Properties getApps(){
return apps;
}
public Device getDevice(){
return device;
}
public SitePreference getSitePreference(){
return sitePreference;
}
public DeviceRouteTable getPipsTable(){
return pipsTable;
}
}
Run Code Online (Sandbox Code Playgroud)
和测试片段
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration( locations={"src/test/resources/PipAppsTest-context.xml"} )
public class PipAppsTest {
@Mock
SitePreferenceHandler sitePreferenceHandler;
@Autowired
PipApps pipApps;
...
}
Run Code Online (Sandbox Code Playgroud)
Sam*_*nen 23
更新 - 2015年9月
如果JUnit 4.9不在类路径中,Spring Framework 4.2.2会抛出一个更有意义的异常.有关详细信息,请参阅SPR-13521.
以下是类级Javadoc的摘录SpringJUnit4ClassRunner:
注意:从Spring Framework 4.1开始,此类需要JUnit 4.9或更高版本.
有问题的类MultipleFailureException是在JUnit 4.9中引入的.
所以这就是你的测试失败的原因ClassNotFoundException.
因此,升级到JUnit 4.9(或最好是4.12)将解决您的问题.
问候,
Sam(Spring TestContext Framework的作者)
| 归档时间: |
|
| 查看次数: |
9842 次 |
| 最近记录: |