Ausführen von Eclipse Junit Plugin Tests mit Junit 4.4 oder neuer - warum werden keine Tests entdeckt?
Muss ich verwenden JUnit 4.4 (oder höher) in einem set von eclipse-plugin-tests, aber ich habe in Folgendes problem:
Tests nicht erkannt werden, wenn mit junit 4.4 oder 4.5-bundles von springsource
(junit44 und junit45). Die org.junit4-bundle, das kann man mit eclipse versorgt junit 4.3 (Stand Ganymead /Eclipse 3.4). Die org.junit4 bundle hat Arbeit, die er erkennt und führt die tests, aber es ist nicht kompatibel mit den neuesten Versionen von JMock, und ich brauche für die Verwendung eines mocking-library.
Hier ist ein Beispiel-test:
package testingplugin;
import static org.junit.Assert.*;
import org.junit.Test;
public class ActivatorTest {
@Test
public final void testDoaddTest() {
fail("Not yet implemented");
}
}
Beim ausführen dieser Tests, erhalte ich die folgende exception:
java.lang.Exception: No runnable methods
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:33)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main(RemotePluginTestRunner.java:62)
at org.eclipse.pde.internal.junit.runtime.CoreTestApplication.run(CoreTestApplication.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:574)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:195)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Allerdings, wenn ich schalten Sie die Projekt-Abhängigkeiten von com.springsource.org.junit, org.junit4, dann der test ausgeführt und schlägt fehl (wie erwartet).
Ich bin mit den Tests als JUnit Plug-in Test in Eclipse, mit dem folgenden Programm-Argumente:
-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}
Folgende plugins gewählt wurde, beim starten (ausgewählt von mir, dann habe ich "add required plugins", um den rest der Abhängigkeiten.):
Workspace:
testingPlugin
Target Platform:
com.springsource.org.hamcrest.core (1.1.0)
com.springsource.org.junit (4.5.0)
....and a bunch of others... (nothing related to testing was auto-selected)
Hier ist mein MANIFEST.MF:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: TestingPlugin Plug-in
Bundle-SymbolicName: testingPlugin
Bundle-Version: 1.0.0
Bundle-Activator: testingplugin.Activator
Import-Package: org.osgi.framework;version="1.3.0"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: com.springsource.org.junit;bundle-version="4.5.0"
Wechsel der letzten Zeile:
Require-Bundle: org.junit4;bundle-version="4.3.1"
Und Aktualisierung der ausgewählten plugins am Start:
Workspace:
testingPlugin
Target Platform:
org.junit4 (4.3.1)
...bunches of auto-selected bundles... (again, nothing else test related)
Bewirkt, dass der test ordnungsgemäß ausgeführt werden (aber mit der falschen version von junit).
InformationsquelleAutor der Frage |
Du musst angemeldet sein, um einen Kommentar abzugeben.
In meiner Erfahrung ist dies passiert, wenn das plugin enthält die plugin-tests hängt nicht von junit. Nach dem hinzufügen der junit 4.4 Abhängigkeit zu meiner MANIFESTIEREN.MF-Datei der Fehler ging Weg und alle tests, die ausgeführt wurden. Die junit-Abhängigkeit sollte optional sein, da das plugin in der Regel nur braucht Sie für den test-code.
InformationsquelleAutor der Antwort
Kann ich nicht testen im Moment, wie ich nicht über ein Eclipse 3.4 Montage praktisch, aber ich habe über ein ähnliches problem vor einer Weile, in der (ich glaube) IntelliJ IDEA 7.0.x, und eine Lösung war explizit eine test-runner.
Mit JUnit 4.5:
Wenn das nicht funktioniert, haben Sie möglicherweise mehr Erfolg mit
org.junit.runners.BlockJUnit4ClassRunner
Für JUnit 4.4 würde ich versuchen
org.junit.internal.runners.JUnit4ClassRunner
EDIT : nicht ganz sicher über die
com.springsource.
Teil wie ich nicht Springsource. Bei deiner Frage scheint es, dass springsource packt JUnit untercom.springsource.org.junit
aber Sie verwenden nurorg.junit
in Ihren code so, ich werde mit dem stick.InformationsquelleAutor der Antwort Thomas Dufour
Frage ich mich, ob Sie vielleicht brauchen, um den import der @Test-tag von der com.springsource.org.junit und nicht vom org.junit.
Volker
InformationsquelleAutor der Antwort ShiDoiSi
Hatte ich einige ähnlich klingende Probleme mit jMock, JUnit & Eclipse vor kurzemwenn auch zugegeben nicht mit plugin tests.
Ich bin mir nicht sicher, ob es relevant ist, aber ich habe Sie alle arbeiten mit den folgenden Versionen :-
Ich auch gefunden, ich musste die JMock-test-runner wie diese :-
InformationsquelleAutor der Antwort James Mead
Ich weiß nicht, welche version von JUnit war es, aber zu erfolgreich suchen test-test-Methoden-name beginnt mit dem Wort "test".
In einer neueren version können Sie einfach markieren-test mit @Test,
für mich funktioniert es in dieser Kombination:
InformationsquelleAutor der Antwort Drejc
Vielleicht Ihre JUnit-bundle fehlt ein Eintrag im MANIFEST.MF:
Dynamic Import-Package: *
Dies ist zwingend erforderlich, um laden von Klassen aus anderen bundles.
Bebbo
InformationsquelleAutor der Antwort
ActivatorTest Bedürfnisse zu erweitern TestCase
InformationsquelleAutor der Antwort shsmurfy
@RunWith(Suite.class)
@SuiteClasses( { UserServiceTest.class,ABCServiceTest.class })
public class AllTestSuite {
public static Test suite() {
}
InformationsquelleAutor der Antwort
Ich denke, die Feder-Test-framework ist nicht kompatibel mit junit 4.4+
InformationsquelleAutor der Antwort ssmithstone