2013-03-19 44 views
2

我有一个包含JUnit测试的Java项目,需要通过Jenkins在不同的测试环境(Dev,Staging等)上运行。在多个环境下执行JUnit测试的配置

我目前必须在不同的环境下构建项目并将url,用户名和密码传递给测试运行器的解决方案是为POM文件中的每个环境加载特定的属性文件。属性文件将为每个环境经由Maven构建命令来设置:

MVN清洁安装-DappConfig =/SRC /测试/ resouces/integration.environment.properties

在pom.xml中:

<plugins> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <systemPropertyVariables> 
        <appConfig>${app.config}</appConfig> 
       </systemPropertyVariables> 
      </configuration> 
     </plugin> 
    </plugins> 

在JUnit测试运行类:

public class BoGeneralTest extends TestCase { 

    protected WebDriver driver; 
    protected BoHomePage boHomePage; 
    protected static Properties systemProps; 
    String url = systemProps.getProperty("Url"); 
    String username = systemProps.getProperty("Username"); 
    String password = systemProps.getProperty("Password"); 
    int defaultWaitTime = Integer.parseInt(systemProps.getProperty("waitTimeForElements")); 
    String regUsername = RandomStringUtils.randomAlphabetic(5); 

    final static String appConfigPath = System.getProperty("appConfig"); 

    static { 
     systemProps = new Properties(); 
     try { 

      systemProps.load(new FileReader(new File(appConfigPath))); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

问题有了这个配置,现在单个测试不能通过Eclipse单独运行,因为他们期望从maven收到appConfig,我得到NullPointerException。

任何建议,非常感谢。

+0

你真的需要为单元测试ENV设置。单元测试应该模拟所有的依赖关系,而不是依赖于环境。如果你正在尝试执行集成测试,那么你应该照顾环境。 – emd 2013-03-19 20:28:49

+0

我有一套针对网站运行的测试用例,因此它们需要作为参数url,登录名和密码 – 2013-03-20 04:24:11

+0

您可以使用Eclipse运行测试,只需设置java系统属性,如-DappConfig =“某个位置” – emd 2013-03-20 09:51:29

回答

1

运行单个测试的先决条件是每个测试用例都有一个运行配置,用于指定默认执行环境。请注意,这个设置必须在每个测试用例本地完成。

在Eclipse Arguments选项卡/ VM参数提交的VM参数必须被指定:

-DappConfig=src/test/resources/pp1.environment.properties 

它拥有的路径到具有环境登录详细信息的各属性文件。

下有项目的src /测试/资源源文件夹中定义了五种属性文件:

environment1.properties 
environment2.properties 
environment3.properties 
environment4.properties 
environment5.properties 
0

白盒TESING:

单元测试应该测试工作的单位,而不是依赖于依赖。一般规则是模拟依赖关系并存储外部系统,以便您有一个安全的环境来测试。

IntegrationTests应以某种方式将真正的依赖关系注入安全的环境中并进行测试。

黑盒测试:

FunctionalTests是什么,我想你想达到的。通常,您可以使用集成测试中的相同配置,将项目pom中的所有自动化测试和每个mvn clean isntall中的所有自动化测试捆绑在一起执行atomaticly测试。一般流程是在预集成测试阶段启动servlet容器,并对其进行测试。您应该始终从用户角度进行测试。