Domanda

Io non sono in grado di eseguire Powermock attraverso maven.Io sono il PowerMock Mockito e PowerMockRunner per la guida di un test jUnit.

Ecco il test:

@RunWith(PowerMockRunner.class)
@PrepareForTest( { UserLocalServiceUtil.class, ExpandoBridge.class })
public class AlertNotificationsTest {
//...

Non ho configurato niente di speciale per l'esecuzione del test.Il mio pom riferimenti i seguenti deps:

  • org.mockito | mockito-tutti | 1.8.0
  • junit | junit | 4.6.0
  • org.powermock.modules | powermock-modulo-junit4 | 1.3.1
  • org.powermock.api | powermock-api-mockito | 1.3.1

quando ho eseguito mvn -Dtest=AlertNotificationsTest test mvn dice che non c'è per eseguire il test.Ma se eseguo la stessa classe di test da eclipse, tutto funziona ok.

Sto facendo qualcosa di sbagliato?


Ecco il mio pom.xml di seguito (le parti pertinenti)

    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>5.9</version>
        <classifier>jdk15</classifier>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.6</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.8.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock.modules</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>1.3.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock.api</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>1.3.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Ecco l'output di maven

mvn -Dtest=AlertNotificationsTest test

...
[INFO] Surefire report directory: C:\Devel\Java\EP_PORTAL\information-provider\target\surefi

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running TestSuite
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.313 sec

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] No tests were executed!  (Set -DfailIfNoTests=false to ignore this error.)
[INFO] ------------------------------------------------------------------------

Nota:Sono in grado di eseguire altri test, ho appena non può eseguire questo test.Se devo fare il AlertNotificationsTest classe estendere junit.framework.TestCase la classe viene raccolto da maven, ma sembra che non venga guidato da PowerMockRunner.

Ecco l'output di:


Running TestSuite
[ERROR]: No test suite found.  Nothing to run
Tests run: 4, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 1.053 sec <<< FAILURE!

Results :

Failed tests:
  testSingleEventNotification(pt.estradasportugal.traffic.services.events.AlertNotificationsTest)
  testTwoEventNotification(pt.estradasportugal.traffic.services.events.AlertNotificationsTest)

Tests run: 4, Failures: 2, Errors: 0, Skipped: 0

Di nuovo, questi test eseguito bene con Eclipse.


Aggiornamento Ho trovato un possibile problema & soluzione.Ho le prove con TestNG e JUnit.Se lo rimuovi TestNG dal mio pom e la migrazione di tutti i miei test JUnit, sono in grado di eseguire il mio PowerMock test con mvn test.Così sembra che c'è un problema con maven e junit/testng combo.

Mi piacerebbe essere in grado di eseguire sia, ma Se non trovo un modo vado a rispondere alla mia domanda.Grazie ragazzi&ragazze

È stato utile?

Soluzione 7

C'è stato un problema durante la miscelazione sia TestNG & JUnit test.La migrazione di tutti i test Junit risolto il mio problema.Grazie ragazzi.

Altri suggerimenti

Ho appena avuto questo errore e ha lavorato attraverso la soluzione.Il mio pom.xml il file ha la seguente dipendenza:

<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-mockito-release-full</artifactId>
  <version>1.5</version>
  <classifier>full</classifier>
  <scope>test</scope>
</dependency>

Il problema nasce dal fatto che il mio codice utilizza JUnit e sopra la dipendenza è una dipendenza esterna su TestNG.Questo è stato l'arresto di test da eseguire.Perché io non so - si avrebbe se un framework di test sarebbe stato testato un po ' meglio!!!

Comunque la soluzione era quello di abbattere il 'pieno' di dipendenze a quelli richiesti:

<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-api-mockito</artifactId>
  <version>1.5</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-core</artifactId>
  <version>1.5</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.powermock</groupId>
  <artifactId>powermock-module-junit4</artifactId>
  <version>1.5</version>
  <scope>test</scope>
</dependency>

Che risolto.BTW ho usato mvn dependency:tree per comprendere le dipendenze associate.

Non riesco a riprodurre il tuo problema.Con il seguente contenuto nel mio pom.xml:

  <repositories>
    <repository>
      <id>powermock-repo</id>
      <url>http://powermock.googlecode.com/svn/repo/</url>
    </repository>
  </repositories>
  <properties>
    <powermock.version>1.3.1</powermock.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.powermock.modules</groupId>
      <artifactId>powermock-module-junit4</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock.api</groupId>
      <artifactId>powermock-api-mockito</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.6</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-all</artifactId>
      <version>1.8.0</version>
    </dependency>
  </dependencies>

E la seguente classe di test (saltando le importazioni):

@RunWith(PowerMockRunner.class)
@PrepareForTest( { App.class })
public class AppTest {
    @Test
    public void testApp() {
        assertTrue(true);
    }
}

In esecuzione mvn test -Dtest=AppTest funziona bene e mi danno il seguente output:

...
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.mycompany.app.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.135 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3 seconds
[INFO] Finished at: Wed Nov 25 17:34:32 CET 2009
[INFO] Final Memory: 9M/79M
[INFO] ------------------------------------------------------------------------

Quindi la domanda è:avete un metodo annotato con @Test in AlertNotificationsTest?

Mi sono imbattuto in questo problema, ma la sua non è una PowerMock problema.La mia classe di Test è stato nominato XStaticTests.java.

Quando eseguo "mvn clean test", questo test non funziona, è solo scappato quando ho specificato il test usando "-Dtest=..."

Surefire documentazione menziona che, per impostazione predefinita, questi modelli sono cercato per :"/Test*.java" - comprende tutte le sue sottodirectory e tutte java nomi di file che iniziano con "Test"."/Test.java" - comprende tutte le sue sottodirectory e tutte java nomi di file che terminano con "Test"."*/*TestCase.java" - comprende tutte le sue sottodirectory e tutte java nomi di file che terminano con "TestCase".

Quindi cambiando il classname quello che finisce con uno di questi, viene eseguito quando "mvn test" è chiamato, altro surefire plugin deve essere configurato con il nome della classe in particolare.

Powermock installazione sembra Ok per me, ed i vasi sembrano bene (supponendo maven transitivo dipendenze ottenere le altre powermock vasetti - abbiamo circa 6-7 dopo la nostra ivy risolvere le fa)

Eclipse può essere utilizzato proprio "interno" JUnit biblioteca, così i diversi comportamenti ?

Sono la prova annotato con org.junit.@Test ?

Se guardate l'origine del Surefire plugin, si fa qualche subdolo roba.Se si trova qualsiasi TestNG pacchetti in Classloader, si opterà per eseguire un TestNG TestRunner.Non ho ancora visto alcun esempi di JUNit e TestNG l'esecuzione di ben side-by-side.

Ho avuto lo stesso problema, e mi ci è voluto un po ' per capire.Il mio setup è stato tirando in una vecchia versione di jboss.javassist, che stranamente è stata impedita l'PowerMockRunner da lavoro a tutti.

Vale la pena notare che anche io ho un misto di JUnit / TestNG ambiente.Ho già provato la soluzione di aggiungere più sicuro per i fornitori, e che non ha funzionato neanche (utilizzando surefire 2.14.1).Dopo l'aggiornamento a surefire 2.17, il mio JUnit e TestNG iniziato a correre senza la necessità di dichiarare qualsiasi surefire fornitori.

Ecco la mia sezione plugin...

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.17</version>
            <configuration>
                <groups>spring, unit, integration</groups>
                <systemPropertyVariables>
                    <java.awt.headless>true</java.awt.headless>
                    <org.apache.activemq.default.directory.prefix>target/test/</org.apache.activemq.default.directory.prefix>
                    <log4j.configuration>file:${project.basedir}/src/test/resources/log4j.properties</log4j.configuration>
                </systemPropertyVariables>
                <argLine>${surefire.args}</argLine>
            </configuration>
        </plugin>

...e il relativo collaudo deps ...

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.9.5</version>
        <scope>test</scope>
    </dependency>
    <!--
    PowerMock versions are compatible with specific Mockito versions.
    https://code.google.com/p/powermock/wiki/MockitoUsage13
     -->
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>1.5.4</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>1.5.4</version>
        <scope>test</scope>
    </dependency>
    <!-- without this PowerMock tests don't run in maven -->
    <dependency>
        <groupId>jboss</groupId>
        <artifactId>javassist</artifactId>
        <version>3.8.0.GA</version>
        <scope>test</scope>
    </dependency>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top