2014-01-05 35 views
0

我想Maven只有在定义参数时才运行测试阶段。 例如:Maven:在运行测试之前检查参数

mvn test -Dserver=hosname 

如果没有指定的服务器(或空) - 我不想试运行(而不是在MVN测试,也没有在MVN安装)。

我该怎么做?我如何在代码中获取参数的值(例如“server”)?

+1

使用配置文件这是由设置'skipTests = true'的上述变量激活的?但这听起来更像是一个集成测试,而不是单元测试。 – khmarbaise

+0

这是集成测试。你能否提供一个使用配置文件的例子? – Jonathan

回答

1

档案可以做,在行家ü想要什么

为前:

<profiles> 
     <profile> 
      <id>server</id> 
      <activation> 
      <property> 
       <name>server</name> 
       <value>${hosname}</value> 
      </property> 
      </activation> 
      <build> 
      <plugins> 
       <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.4.2</version> 
       <configuration> 
        <skipTests>true</skipTests> 
       </configuration> 
       </plugin> 
      </plugins> 
      </build> 
     </profile> 
</profiles> 
+0

@Jonathan,是否适合你 – Tenacious

+0

@Jonathan,你应用了我发布的解决方案 – Tenacious

+0

是的,但没有奏效。我运行“mvn install -Dserver = localhost”和“mvn install”,并在两种情况下运行测试。 – Jonathan

2

假设你正在使用JUnit:

  • 如果一个测试:使用Assume检查的属性(见下文@BeforeClass),并跳过测试的属性为null
  • 如果许多,创建一个父类并让你的测试扩展它:

public class RunIfServerProperty { 
    @BeforeClass 
    public static void oneTimeSetup() { 
     Assume.assumeNotNull(System.getProperty("server")); 
    } 
} 

也看到Assume javadoc

0

轮廓可以这样使用:

<profiles> 
    <profile> 
    <activation> 
     <property> 
     <name>server</name> 
     </property> 
    </activation> 
    <!-- do whatever you need to do --> 
    </profile> 
</profiles> 
相关问题