Laufen Junit & PowerMock mit Mockito durch PowerMockRunner von Maven

8

Ich bin nicht in der Lage, Powermock durch Maven laufen zu lassen. Ich bin der PowerMock Mockito und der PowerMockRunner, um einen jUnit Test zu fahren.

Hier ist der Test:

%Vor%

Ich habe keine speziellen Einstellungen für den Test konfiguriert. Meine Pom verweist auf die folgenden Deps:

  • org.mockito | Mockito-all | 1.8.0
  • junit | Junit | 4.6.0
  • org.powermock.modules | powermock-module-junit4 | 1.3.1
  • org.powermock.api | powermock-api-mockito | 1.3.1

wenn ich mvn -Dtest=AlertNotificationsTest test mvn benutze sagt es gibt keinen Test zu laufen. Aber wenn ich dieselbe Testklasse von Eclipse aus laufe, läuft alles gut.

Mache ich etwas falsch?

Hier ist meine pom.xml unten (die relevanten Teile)

%Vor%

Hier ist die Ausgabe von maven

  

mvn -Dtest = AlertNotificationsTest test

%Vor%

Hinweis : Ich kann andere Tests ausführen, diesen Test kann ich nicht ausführen. Wenn ich die Klasse AlertNotificationsTest erweitern junit.framework.TestCase die Klasse wird von Maven abgeholt, aber es scheint, dass es nicht von PowerMockRunner gefahren wird.

Hier ist die Ausgabe von:

%Vor%

Auch diese Tests laufen gut mit Eclipse.

Update Ich habe ein mögliches Problem & amp; Problemumgehung. Ich habe Tests mit TestNG und JUnit. Wenn ich TestNG von meinem Pom entferne und alle meine Tests nach JUnit migriere, kann ich meinen PowerMock-Test mit mvn test ausführen. Es scheint also, dass es ein Problem mit Maven und der Junit / Testng-Kombination gibt.

Ich würde gerne beide rennen können, aber wenn ich keinen Weg finde, werde ich meine eigene Frage beantworten. Danke Jungs und Mädels

    
Miguel Ping 25.11.2009, 13:14
quelle

7 Antworten

-1

Beim Mischen von TestNG & amp; JUnit-Tests. Die Migration aller Tests auf Junit hat mein Problem gelöst. Danke Jungs.

    
Miguel Ping 02.12.2009, 12:25
quelle
12

Ich hatte gerade diesen Fehler und arbeitete die Lösung durch. Meine pom.xml-Datei hatte die folgende Abhängigkeit:

%Vor%

Das Problem kommt von der Tatsache, dass mein Code JUnit verwendet und die obige Abhängigkeit eine externe Abhängigkeit von TestNG hat. Das hat meinen Test gestoppt. Warum ich nicht weiß - du hättest zwar ein Testframework ein bisschen besser getestet bekommen !!!!

Wie auch immer, die Lösung bestand darin, die 'vollständigen' Abhängigkeiten auf genau die benötigten zu reduzieren:

%Vor%

Das hat es gelöst. Übrigens habe ich mvn dependency:tree verwendet, um die zugehörigen Abhängigkeiten zu verstehen.

    
Adam Davies 02.01.2013 17:34
quelle
2

Ich kann Ihr Problem nicht reproduzieren. Mit folgendem Inhalt in meiner pom.xml:

%Vor%

Und die folgende Testklasse (Überspringen der Importe):

%Vor%

Running mvn test -Dtest=AppTest funktioniert einfach und gibt mir die folgende Ausgabe:

%Vor%

Die Frage ist also: Haben Sie eine Methode mit @Test in AlertNotificationsTest ? annotiert?

    
Pascal Thivent 25.11.2009 16:40
quelle
2

Ich bin auch auf dieses Problem gestoßen, aber es ist kein PowerMock-Problem. Meine Testklasse wurde XStaticTests.java genannt.

Wenn ich "mvn clean test" ausführe, würde dieser Test nicht ausgeführt, sondern nur ausgeführt, wenn ich den Test mit "-Dtest = ..." angegeben habe

Die todsichere Dokumentation erwähnt, dass standardmäßig nur diese Muster gesucht werden: " /Test*.java" - enthält alle Unterverzeichnisse und alle Java-Dateinamen, die mit "Test" beginnen. " / Test.java" - enthält alle Unterverzeichnisse und alle Java-Dateinamen, die mit "Test" enden. " * / * TestCase.java" - enthält alle Unterverzeichnisse und alle Java-Dateinamen, die mit "TestCase" enden.

Das Ändern des Klassennamens in einen, der mit einem dieser Punkte endet, wird ausgeführt, wenn "mvn test" aufgerufen wird. Andernfalls muss das todsichere Plugin mit dem Klassennamen speziell konfiguriert werden.

    
shark8me 14.09.2012 12:48
quelle
1

Das Powermock-Setup sieht für mich ok aus, und die Gläser scheinen in Ordnung zu sein (vorausgesetzt, die transitiven Abhängigkeiten von Maven bekommen die anderen Powermoks - wir haben etwa 6-7, nachdem unser Efeu-Entschluss sie bekommen hat)

Eclipse verwendet möglicherweise seine eigene "interne" JUnit-Bibliothek, also die verschiedenen Verhaltensweisen?

Ist der Test mit org.junit versehen. @ Test?

    
Phantomwhale 25.11.2009 13:50
quelle
0

Wenn du dir die Quelle des Surefire-Plugins ansiehst, macht es etwas hinterhältiges Zeug. Wenn es im Classloader TestNG-Pakete findet, wird es sich entscheiden, einen TestNG TestRunner auszuführen. Ich habe noch keine Beispiele von JUNit- und TestNG-Tests gesehen, die gut nebeneinander laufen.

    
Nelz 04.10.2010 23:51
quelle
0

Ich hatte das gleiche Problem, und ich brauchte eine Weile, um es herauszufinden. Mein Setup war in einer älteren Version von jboss.javassist eingezogen, die den PowerMockRunner seltsamerweise daran hinderte, überhaupt zu arbeiten.

Es ist erwähnenswert, dass ich auch eine gemischte JUnit / TestNG-Umgebung habe. Ich habe vorher versucht, mehrere Surefire-Provider hinzuzufügen, und das hat auch nicht funktioniert (mit today 2.14.1). Nach dem Upgrade auf todayfire 2.17 starteten sowohl meine JUnit- als auch meine TestNG-Tests, ohne dass ich irgendwelche todsicheren Provider angeben musste.

Hier ist mein Plugin-Abschnitt ...

%Vor%

... und die relevanten Test-Deps ...

%Vor%     
Jeff Fairley 20.03.2014 16:04
quelle
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '346906',
    'url' => 'running-junit-powermock-with-mockito-through-powermockrunner-from-maven',
];

$_COOKIE = [
    '_csrf-frontend' => 'f8034da681248f8c3e399cf1d1b69ca55ea71ebd13d3ca2d8ca756f3a374819da:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"ByvebVnwD5WpAq5-8TM_7qQB5AQYM7PP";}',
    'advanced-frontend' => 'c84c17a6d38cef5796eddfa562e092b2',
];

$_SESSION = [
    '__flash' => [],
];