带命令行参数的 mvn integration-test

背景

  1. 使用 maven-failsafe-plugin 进行集成测试
  2. 运行: mvn integration-test 执行完所有的继承测试(在@BeforeClass 中初始化环境, 在@AfterClass 中清理环境)

需求

在 mvn integration-test 命令后面增加参数,在此设为instanceType。 若instanceType=Redis 则在@BeforeClass 中创建一个Redis实例; 若instanceType=Memcache 则在@BeforeClass 中创建一个Memcache 实例

PS: 当然也可以写一份Redis 的测试代码,一份Memcache的测试代码,但是考虑到两者大部分的测试代码都是相同的,会造成大量代码冗余,因此不考虑

实现

总体来说是在maven-failsafe-plugin 的configuration 中进行配置

基于environmentVariables 实现

  • pom 中的property 配置
  
    Redis
  
  • pom 中的plugin 配置
      
        org.apache.maven.plugins
        maven-failsafe-plugin
        
          
            integration-tests
            
              integration-test
              verify
            
            
              
              
                ${instance.type}
              
              
                com/aliyun/open/api/redisa/TestSuites.class
              
            
          
        
      
  • 代码中使用命令行参数instanceType
    @BeforeClass
    public static void suitesSetup() {
        String dbInstanceId = null
        if ("Memcache".equalsIgnoreCase(System.getenv("instanceType"))) {
            // create memcache instance
        } else {
            // create redis instance
        }
    }
  • 执行命令示例
mvn integration-test -Dinstance.type=Memcache

基于systemPropertyVariables 实现

  • pom 中的plugin 配置
    
        org.apache.maven.plugins
        maven-failsafe-plugin
        
          
            integration-tests
            
              integration-test
              verify
            
            
              
              
                Redis
              
              
                com/aliyun/open/api/redisa/TestSuites.class
              
            
          
        
      
  • 代码中使用命令行参数instanceType
  @BeforeClass
  public static void suitesSetup() {
      String dbInstanceId = null
      if ("Memcache".equalsIgnoreCase(System.getProperty("instanceType"))) {
          // create memcache instance
      } else {
          // create redis instance
      }
  }
  • 执行命令示例
mvn integration-test -DinstanceType=Memcache

你可能感兴趣的:(带命令行参数的 mvn integration-test)