0

Ich habe einen RESTful-Service mit Spring MVC erstellt. Ich habe einen Integrationstest zum Testen meines Rest-Controllers mit dem Federtest mvcmock erstellt.Abhängigkeitsinjektionsfehler während der Installation von mvn loading standalone run

Wenn ich diesen Test unter Verwendung als Juni ausführen. Es läuft gut. Wenn jedoch der gleiche Test während mvn install ausgeführt wird, verwenden Sie das todsichere Plugin. Dieser Test ist beschwerlich werfen fatalen Fehler:

Wenn ich vorherige Logs überprüft, heißt es, dass es 0 abhängigkeit geladen. Diese war das Protokoll: „23 geladen Bohnen in der gleichen Protokollzeile“

DEBUG XmlBeanDefinitionReader - Loaded 0 bean definitions from location pattern [classpath*:service-test-context.xml]

Allerdings habe ich wieder diese Testklasse als Junit laufen und ich konnte sehen,

Frage: Könnten Sie bitte vorschlagen, was kann das Problem sein?

Hinweis: Dies ist Multi-Maven-Modul-Anwendung und die Abhängigkeit eines anderen Moduls wird nicht injiziert. Ich bekam dasselbe Problem, als ich diesen Test als Junit führte. Dann habe ich abhängige Module in Eclipse> Build> Projekt hinzugefügt und Problem gelöst in Run als JUnit. Jetzt bekommen Sie dieses Problem während Sie mvn install.

+0

Beendet Ihre JUnit Runner-Klasse in ** Test **? Haben Sie auch versucht ** mvn clean install **? – MikeJRamsey56

+0

Nein, aber es wird aufgerufen. Muss es seinen Namen mit Test beenden? Sie können einen beliebigen Ausdruck in Ihre todsichere Konfiguration einschließen. Ich habe versucht, MVN sauber installieren, aber kein Glück. –

Antwort

0

Enthält Ihre todsichere Konfiguration einen enthält Parameter?

„eine Liste von Elementen, die Tests (nach Mustern) angeben, die in Test einbezogen werden sollen. Wenn nicht angegeben, und wenn der Meßparameter nicht angegeben ist, enthält der Standard

<includes> 
<include>**/Test*.java</include> 
<include>**/*Test.java</include> 
<include>**/*TestCase.java</include> 
</includes> 

wird“

Einfache Lösung ist es, Ihren Test-Runner so zu benennen, dass er in Test.java endet. Dann

mvn test 

wird es abholen.

Aktualisiert

Eine Alternative ist dies:

„Test:. diese Parameter an einzelne Tests nach Dateinamen laufen und überschreiben die includes/schließen Parameter Jedes Muster, das Sie hier angeben, wird verwendet werden, Um ein Include-Muster zu erstellen, das wie **/$ {test} .java formatiert ist, können Sie einfach "-Dtest = MyTest" eingeben, um einen einzelnen Test mit dem Namen "foo/MyTest.java" auszuführen Dieser Parameter überschreibt die includes/excludes-Parameter und den Parameter TestNG suiteXmlFiles. Seit 2.7.3 können Sie exe cute eine begrenzte Anzahl von Methoden im Test durch Hinzufügen von # myMethod oder # my * ethod. Zum Beispiel "-Dtest = MyTest # myMethod". Dies wird für Junit 4.x und TestNg unterstützt.

Seit 2.19 wird eine komplexe Syntax in einem Parameter unterstützt (JUnit 4, JUnit 4.7+, TestNG): "-Dtest = Test,! Unstable *, pkg/**/Ci * leTest.java, Test # Test Eins + TestZwei ?????, # Schnell * + LangsamTest " " -Dtest = Basic *,!% Regex [. .Unstable.],!% Regex [. .MyTest.class # eins. | zwei. ],% regex [#fast. | langsam *] "

Die Parameterized JUnit runner beschreibt Methoden Test einen Index in Klammern, so dass die nicht-regex Methode Muster würden. #testMethod [] Wenn @Parameter (Name =". {Index }: FIB ({0}) = {1} ") und Auswählen der Index zB 5 in Mustern, würde die nicht-reguläre Ausdruck Methode Muster #testMethod werden [5:].

Type: java.lang.String 
Required: No 
User Property: test 

"

Also, wenn Ihr Test Runner foo/MyVeryOwnRunner.java genannt wurde, könnten Sie die folgenden tun dank

mvn clean test -Dtest=MyVeryOwnRunner 
+0

Ich habe ein Ersatzteil, das in Test ** s ** .java endet und es wird nicht ausgeführt, es sei denn, ich benenne es um und lasse das ** s ** fallen. – MikeJRamsey56

+0

Das Problem bezieht sich nicht auf die Ausführung des Testfalls. Es wird gelaufen. Die erforderlichen Abhängigkeiten werden jedoch nicht geladen. –

+0

Ah. Sie müssen Ihren externen Gläsern hinzufügen. – MikeJRamsey56