2012-06-17 11 views
7

Wenn mvn test ausgeführt wird, werden nicht alle Testklassen ausgeführt. Wenn ich explizit eine Klasse durch Hinzufügen von -Dtest = PropertyTests zur Verfügung stelle, werden die Tests ausgeführt.Maven wird keine Tests ausführen

Hier ist meine pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.example</groupId> 
    <artifactId>example</artifactId> 
    <version>1.0</version> 

    <properties> 
     <java-version>1.6</java-version> 
     <org.slf4j-version>1.6.6</org.slf4j-version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 

     <!-- Logging --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${org.slf4j-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>${org.slf4j-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>${org.slf4j-version}</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.16</version> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- Test --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
      <scope>test</scope> 
     </dependency> 

    </dependencies> 

    <build> 

     <plugins> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>${java-version}</source> 
        <target>${java-version}</target> 
       </configuration> 
      </plugin> 

     </plugins> 

    </build> 

</project> 

Warum Maven werden die Tests automatisch nicht ausgeführt? Habe ich etwas verpasst?

UPDATE

Beispiel Test (Klasse ist in src/test/java/com/example/PropertyTests.java):

public final class PropertyTests 
{ 
    @Test 
    public void testGetters() 
    { 
     Property property = new Property("foo", "bar"); 

     Assert.assertEquals("foo", property.getKey()); 
     Assert.assertEquals("bar", property.getValue()); 
    } 
} 

Maven Ausgabe auf mvn test:

$ mvn test 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Unnamed - com.example:example:jar:1.0 
[INFO] task-segment: [test] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [resources:resources {execution: default-resources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 1 resource 
[INFO] [compiler:compile {execution: default-compile}] 
[INFO] Compiling 13 source files to /home/danny/workspace/example/target/classes 
[INFO] [resources:testResources {execution: default-testResources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 1 resource 
[INFO] [compiler:testCompile {execution: default-testCompile}] 
[INFO] Compiling 3 source files to /home/danny/workspace/example/target/test-classes 
[INFO] [surefire:test {execution: default-test}] 
[INFO] Surefire report directory: /home/danny/workspace/example/target/surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

Results : 

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

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 10 seconds 
[INFO] Finished at: Sun Jun 17 18:09:45 CEST 2012 
[INFO] Final Memory: 17M/42M 
[INFO] ------------------------------------------------------------------------ 

Antwort

12

Sie müssen das Maven-Surefire-Plugin hinzufügen, um die Tests auszuführen. Die Konfiguration kann hier gefunden werden: http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html

UPDATE:

Hier ist eine Konfiguration, die ich mit specs/junit verwendet haben.

  <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.8.1</version> 
       <configuration> 
        <includes> 
         <include>**/*Spec.*</include> 
         <include>**/*Test.*</include> 
        </includes> 
       </configuration> 
      </plugin> 

UPDATE 2:

Die Namenskonvention ist Test so ändern Property zu PropertyTest.

+0

Nach dem Hinzufügen des todsicheren Plugins werden die Tests immer noch nicht ausgeführt (Tests laufen: 0). Siehe aktualisierte Frage für Code. – dtrunk

+0

Sind Ihre Tests in src/test/java? Wie sehen deine Tests aus? Welche Ergebnisse bekommst du von Maven? – Noah

+2

Ich denke, Sie müssen das 's' von 'PropertyTests' fallen lassen. – Noah

Verwandte Themen