2015-03-26 3 views
7

ich eine Reihe von Tests haben identifiziert den Frühling @IfProfileValue Flagge mitAusführen einer Kreuzung von Tests Junit und Maven mit

@IfProfileValue{"a", "c"} 
@Test 
public void testA{ Do Stuff } 

@IfProfileValue{"a", "b"} 
@Test 
public void testB{ Do Stuff } 

@IfProfileValue{"a", "b"} 
@Test 
public void testC{ Do Stuff } 

@IfProfileValue{"b"} 
@Test 
public void testD{ Do Stuff } 

ich alle Tests laufen kann mit

mvm clean install -Dtest-group=a -Dtest-group=b 

ich ausführen möchten nur die Tests, die @IfProfileValue = {"a", "b") entsprechen (Test B/C) also gibt es eine Möglichkeit, nur einen Schnittpunkt dieser beiden Werte mit maven auszuführen?

Antwort

1

Edit: Sie die Klasse mit @[email protected] and provide your own implementation of ProfileValueSource` mit Anmerkungen versehen kann, wie in this answer beschrieben.

Sieht aus wie mit Maven allein nicht möglich ist. Es sieht aus wie es Array aus mehreren Argumenten mit dem gleichen Namen bauen:

mit @IfProfileValue(name = "test-group", values = {"c"}) kommentierte
mvn test -Dtest-group=a -Dtest-group=c 

Willen liefen Test. Weder Komma-Notation funktioniert, wird es behandeln 'a, c' als wörtliche:

mvn test -Dtest-group=a,c 
<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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>net.s17t</groupId> 
<artifactId>showcase</artifactId> 
<version>0.0.1-SNAPSHOT</version> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-framework-bom</artifactId> 
      <version>4.1.6.RELEASE</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compier-plugin</artifactId> 
      <version>3.3</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Java-Code:

package showcase; 

import static org.junit.Assert.*; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.test.annotation.IfProfileValue; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.TestExecutionListeners; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 
import org.springframework.test.context.support.AnnotationConfigContextLoader; 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(loader=AnnotationConfigContextLoader.class) 
@TestExecutionListeners 
public class SimpleTest { 

    @Configuration 
    static class ContextConfiguration { 

    } 

    @Test 
    @IfProfileValue(name = "test-group", values = {"a", "b"}) 
    public void testPhoneLogIsReadable() { 
     System.out.println("I'm a and b"); 
     assertTrue("Phone log is not readable.", true); 
    } 

    @Test 
    @IfProfileValue(name = "test-group", values = {"c"}) 
    public void testPhoneLogHasRecords() { 
     System.out.println("I'm c"); 
     assertFalse("Phone log does not have records.", false); 
    } 

}