微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Maven,Jenkins – 如何将项目构建到不同的测试环境?

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

如何将项目的构建设置为不同的环境以及如何将URL,用户名和密码传递给maven?

我可以使用maven 3配置文件属性文件中读取环境URL,用户名和密码吗?

编辑:我已将配置文件添加到Project POM:

<profiles>
        <profile>
            <id>Integration</id>
        </profile>
        <profile>
            <id>Staging</id>
        </profile>
        <profile>
            <id>PP1</id>
        </profile>
        <profile>
            <id>PP2</id>
        </profile>
        <profile>
            <id>PP3</id>
        </profile>
</profiles>

如何将URL,用户名和密码传递给这些配置文件

目前,测试是从属性文件获取测试环境详细信息:

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"));

    static {
        systemProps = new Properties();
        try {
            systemProps.load(new FileReader(new File("src/test/resources/environment.properties")));
        } catch (Exception e) {
            e.printstacktrace();
        }
    }

编辑2:

测试运行器类中实现的更改:

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();
        }
    }

解决方法

我不会在POM中包含任何属性,但会在每个环境中使用外部属性文件,至少在属性更改时您不需要触摸POM.

在您的POM中,指定一个引用属性文件配置文件,其属性位于:

<profiles>
    <profile>
        <id>staging</id>
        <properties>
            <app.config>/your/path/to/app.staging.properties</app.config>
        </properties>
    </profile>
</profile>

然后你可以将它传递给你的Surefire配置:

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

从您的测试中,您可以加载属性文件内容,例如:

final String appConfigPath = System.getProperty("appConfig");
// Load properties etc...

实际上,您实际上可以更进一步…完全转储Maven配置文件,并在Jenkins构建配置中指定-DappConfig = / your / path / to / app.staging.properties.

原文地址:https://www.jb51.cc/java/130050.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐