java - 运行 ant build.xml 并传递 "environment url"参数

标签 java selenium ant jenkins build.xml

我是 Ant 和一般编程的新手。

我做了什么:

我使用 HtmlUnit 用 Ja​​va 编写了一个测试。我能够使用 ant 构建执行我的测试。效果很好。我还可以在 Jenkins 中执行我的 ant 脚本。

我的问题:

我希望能够在开发、阶段和生产环境中运行我的测试,而无需更改代码。我可以将这些环境“URL”作为我的 ant 构建的一部分传递,还是有其他方法可以做到这一点?

我的代码目前如下所示:

配置类:

package com.environments;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Configuration {

public static String getUrl(String environment) throws IOException {

    Properties prop = new Properties();
    InputStream input = null;

    input = new FileInputStream("configuration/environment.properties");

    prop.load(input);
    String url = prop.getProperty(environment);

    return url;

}


public static String setEnvironment(String url) throws Exception {

    switch (url) {
        case "DEV": url = Configuration.getUrl("DEV"); break; 
        case "STAGE": url = Configuration.getUrl("STAGE"); break; 
        case "LIVE": url = Configuration.getUrl("LIVE"); break;         
    }

    return url;
}
}

测试类:

package com.course_landingpage;

import static com.thoughtworks.twist.core.execution.TwistVerification.verifyEquals;
import org.springframework.beans.factory.annotation.Autowired;
import com.environments.Configuration;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.DomElement;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.thoughtworks.twist.core.execution.TwistScenarioDataStore;
import com.ui.pagetitles.PageTitles;

public class LandingPageCarouselTest {

public static String url;

@Autowired
private TwistScenarioDataStore scenarioStore;

public LandingPageCarouselTest() throws Exception {         
    url = Configuration.setEnvironment("DEV");
}


// Tests for the landing page carousel
public void verifyCarouselDisplayedWithCourseInformation() throws Exception {

    final WebClient webClient = new WebClient();
    final HtmlPage page = webClient.getPage(url + "/home.html");
    verifyEquals("Incorrect page title", PageTitles.CPD_LANDING_PAGE, page.getTitleText());

    //Click the Discover More button in the carousel 
    final HtmlAnchor anchor = page.getAnchorByText("DISCOVER MORE");
    anchor.click();

    // Click right arrow to view next course in carousel 
    final HtmlAnchor rightArrow = page.getAnchorByText(">");
    rightArrow.click();

    // Click left arrow to view previous course in carousel 
    final HtmlAnchor leftArrow = page.getAnchorByText("<");
    leftArrow.click();

    // Check the course title is correct in the carousel 
    DomElement element = page.getFirstByXPath("/html/body/section/article/ul/li/div/h2");
    final String course1Title = element.getTextContent();
    verifyEquals("Course text is incorrect", course1Title, Configuration.getCourseTitleInCarousel());

    webClient.closeAllWindows();
}

如您所见,当前当我想在不同的环境上运行测试时,我在测试类的构造函数中设置环境。当前设置为“DEV”。但我可以将其设置为“STAGE”或“LIVE”以在其他环境上进行测试。

最佳答案

如果您使用 java Ant 任务执行 Java 测试类,则可以通过 sysproperty 嵌套元素将环境 URL 作为系统属性传递:

<java dir="${testdir}" classname="MainClass">
   <sysproperty key="env.url" value="${env.url}"></sysproperty>
   ...
</java>

您可以在构造函数中访问系统属性的值,如下所示:

url = Configuration.setEnvironment(System.getProperty("env.url"));

${env.url} Ant 属性可以从其他用户在评论中提到的环境中存在的某个配置文件中获取,也可以在您想要运行 Ant 构建文件时将其显式传递给它:ant -f build.xml -Denv.url=DEV

关于java - 运行 ant build.xml 并传递 "environment url"参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24369886/

相关文章:

java - eclipselink 中的 UPDATE CASCADE 外键

java - 使用 War 在 Spring、Hibernate 和 Jersey api 中嵌入 Jetty

java - org.openqa.selenium.InvalidSelectorException : invalid selector SyntaxError: Unexpected token } using XPath through Selenium Java

ant - 将 .class 文件添加到 ant 类路径中以进行 groovc ant 任务编译?

java - Spring中有哪些获取ApplicationContext对象的方法?

java - 在 karaf shell 中创建日期

javascript - 添加新的 Selenium IDE 快捷方式

javascript - 虚拟中继器和 Protractor

android - 在 Jenkins 中使用 Ant 复制文件

windows - 跨平台、Apache Ant、构建的公共(public)环境变量列表