用于在多个环境中执行JUnit测试的配置

问题描述 投票:5回答:2

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

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

MVN全新安装-DappConfig = / src / test / 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。

任何建议都会受到赞赏。

java eclipse jenkins maven-3 junit4
2个回答
0
投票
UnitTests应该测试工作单元,而不依赖于依赖项。通常的规则是模拟依赖关系并对外部系统进行存根,以便您有一个安全的环境进行测试。

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

黑匣子测试:

FunctionalTests是我想您要实现的。通常,您可以从集成测试中使用相同的配置,将所有自动化测试捆绑在项目pom中,然后在每个mvn clean isntall上原子地执行测试。一般流程是在集成前测试阶段启动servlet容器,然后对它进行测试。您应该始终从用户角度进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.