5

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

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

mvn clean install -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 单独运行,因为它们期望appConfig从 maven 接收,而我得到 NullPointerException。

任何建议都受到高度赞赏。

4

2 回答 2

2

运行单个测试的前提是每个测试用例都有一个运行配置,该配置将指定默认的执行环境。请注意,此设置必须在每个测试用例本地完成。

在 Eclipse Arguments 选项卡/VM Arguments 字段中,必须指定 VM 参数:

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

它保存具有环境登录详细信息的相应属性文件的路径。

项目的 src/test/resources 源文件夹下定义了五个属性文件:

environment1.properties
environment2.properties
environment3.properties
environment4.properties
environment5.properties
于 2013-04-25T10:21:53.367 回答
-1

白盒测试:

UnitTests 应该测试工作单元,而不是依赖于依赖项。一般规则是模拟依赖项和存根外部系统,以便您有一个安全的环境进行测试。

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

黑盒测试:

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

于 2013-03-20T09:55:31.520 回答