2014-06-23 3 views
1

Ant와 프로그래밍에 익숙하지 않습니다."environment url"매개 변수가 전달 된 상태로 ant build.xml을 실행하십시오.

은 내가 무슨 짓을 :

내가 HtmlUnit과를 사용하여 Java에서 테스트를 작성했습니다. 개미 빌드를 사용하여 테스트를 실행할 수 있습니다. 그것은 잘 작동합니다. Jenkins에서 개미 스크립트를 실행할 수도 있습니다.

내 문제 : 내가 코드를 변경하지 않고 dev에, 무대 및 생산 환경 내 테스트를 실행할 수 있도록하려면

. 내 "ant"빌드의 일부로 이러한 환경 "URL"을 전달할 수 있습니까? 아니면이를 수행 할 다른 방법이 있습니까?

내 코드는 현재 다음과 같습니다

구성 클래스 :

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

당신이 볼 수 있듯이, CURREN 다른 환경에서 테스트 할 때 테스트 클래스의 생성자에서 환경을 설정했습니다. 현재 "DEV"로 설정되어 있습니다. 하지만 "STAGE"또는 "LIVE"로 설정하여 다른 환경에서도 테스트 할 수 있습니다. 당신이 java Ant 태스크를 사용하여 자바 테스트 클래스를 실행하는 경우

+0

일반적으로 사용되는 표준은 각 환경에 대한 config.properties를 갖는 것입니다. config.properties에는 현재 환경이 무엇인지 나타내는 특성을 포함 할 수 있습니다. 당신은 그런 것을 고려 했습니까? –

+0

괜찮습니다. 어떻게 내 개미집에서 그 속성을 사용하겠습니까? 내 개미 빌드를 실행하기 전에 해당 속성 값을 변경하고 싶습니다. 매개 변수로 전달할 수 있다면 좋을 것입니다. – user3554072

+0

개미 빌드에서 액세스하지 않으므로 프로그래밍 방식으로 액세스 할 수 있습니다. 그러나, 누군가 당신이하려고하는 것을 정확하게하기 위해 더 나은 대답을했습니다. –

답변

1

, 당신은 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 -f build.xml -Denv.url=DEV

+0

감사합니다! 잘 했어. – user3554072

관련 문제