Warum ist mein Federtest-Setup fehlgeschlagen mit den folgenden nicht so nützlichen Fehlermeldungen unten? Alle Vorschläge werden geschätzt.Warum die kryptische MultipleFailureException-Fehlermeldung mit der SpringJUnit4ClassRunner.withAfterClasses-Methode
JUnit Ausgabe
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
Konsolenausgabe
INFO: org.springframework.test.context.support.DefaultTestContextBootstrapper - Loaded Standard TestExecutionListener Klassennamen von Ort [META-INF /spring.factories]: [org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springf ramework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener] INFO: org.springframework.test.context.support.DefaultTestContextBootstrapper - Konnte nicht instantiieren TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]. Geben Sie benutzerdefinierte Listenerklassen an oder stellen Sie die standardmäßigen Listenerklassen (und ihre erforderlichen Abhängigkeiten) zur Verfügung. Anstoßende Klasse: [org/springframework/transaction/interceptor/TransactionAttribute] INFO: org.springframework.test.context.support.DefaultTestContextBootstrapper - TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener] konnte nicht instanziiert werden. Geben Sie benutzerdefinierte Listenerklassen an oder stellen Sie die standardmäßigen Listenerklassen (und ihre erforderlichen Abhängigkeiten) zur Verfügung. Anstoßende Klasse: [org/springframework/transaction/interceptor/TransactionAttributeSource] INFO: org.springframework.test.context.support.DefaultTestContextBootstrapper - Verwenden von TestExecutionListeners: [or[email protected]76959acc, org.springframework .test.context.support.DependencyInjectionTestExecutionListener @ 57e603e6, org.springfra[email protected]3e0a1e1f]
ist hier, um das Ziel-Schnipsel
@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;
}
}
Und der Test-Snippet
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"src/test/resources/PipAppsTest-context.xml"})
public class PipAppsTest {
@Mock
SitePreferenceHandler sitePreferenceHandler;
@Autowired
PipApps pipApps;
...
}
Was nicht so nützlich ist? Ausgehend vom Stack-Trace verwenden Sie eine nicht kompatible Version von JUnit 4 mit Spring Test. –
Ich habe JUnit 4.7 verwendet. Ich bin jetzt nach deiner Empfehlung gegangen und habe es auf die neueste JUnit-Version 4.12 aufgerüstet. Der Fehler ist nicht mehr aufgetreten. Diese Fehlermeldung ist jedoch kryptisch und daher nicht sehr nützlich. Aber ich nehme an, dass es einen guten Grund für die Unbestimmtheit gibt. – 000