2015-03-26 19 views
7

kullanarak testlerin bir kesişmeSpring @IfProfileValue bayrağını kullanılarak tespit testlerin bir numarası var Junit Maven'i

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

Ben

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

Ben çalıştırmak istiyorum kullanarak tüm testleri çalıştırabilirsiniz Koşu Sadece @IfProfileValue = {"a", "b") (Test B/C) ile eşleşen testler maven kullanarak sadece bu iki değerin bir kesişimini yürütmenin bir yolu var mı?

cevap

1

Düzenleme: this answer açıklandığı gibi, @[email protected] and provide your own implementation of ProfileValueSource` ile sınıf açıklama olabilir .

Yalnız Maven ile mümkün değil gibi görünüyor.

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

irade @IfProfileValue(name = "test-group", values = {"c"}) ile açıklamalı testi yaptı: aynı ada sahip birden argümanlardan dizi inşa edebilirsiniz gibi görünüyor.

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 kodunu:

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

} 
Ne virgül notasyonu o kadar edebi 'bir, c' davranacak, çalışacak