2015-03-26 15 views
7

Mam liczbę testów zidentyfikowany z flagą Wiosna @IfProfileValueRunning skrzyżowanie testów z wykorzystaniem JUnit i Maven

@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 } 

mogę uruchomić wszystkie testy z użyciem

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

chcę uruchomić tylko testy, które pasują do @IfProfileValue = {"a", "b") (Test B/C) , czy istnieje sposób na uruchomienie tylko przecięcia tych dwóch wartości za pomocą maven?

Odpowiedz

1

Edit: Można opisywanie klasę z @[email protected] and provide your own implementation of ProfileValueSource`, jak opisano w this answer.

Wygląda na to, że sam Maven nie jest możliwy. Wygląda na to, że można zbudować tablicę z wielu argumentów o tej samej nazwie:

mvn test -Dtest-group=a -Dtest-group=c 

będzie prowadził badanie uwagami z @IfProfileValue(name = "test-group", values = {"c"}). Żaden zapis przecinek zadziała, to będzie leczyć 'a, c' jako dosłowne:

mvn test -Dtest-group=a,c 
kod
<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:

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); 
    } 

} 
Powiązane problemy