2017-12-01 13 views
0

나는 동적 testng.xml에게 내가 코드를 통해 testng.xml 파일을 만들고 프로 @Test 방법에 매개 변수를 전달하는 의미 파일을 사용하여 테스트 스크립트를 실행해야 문법적으로 내가 testng.xml 파일을 생성하고 @Test 방법은 매개 변수와 함께 기록 된 SampleClass.java를 실행해야 두 개의 자바 파일 DynamicTestNG.java을 만든 것을 들어동적 TestNG.xml 파일을 생성하고 전달할 매개 변수

.

DynamicTestNG.java

public class SampleClass { 

private WebDriver driver; 

    @BeforeTest 
    public void setUp() 
    { 
     System.setProperty("webdriver.chrome.driver","C:\\Users\\AK5040691\\Desktop\\IE driver\\chromedriver.exe"); 
     driver = new ChromeDriver(); 

     driver.manage().window().maximize(); 
     driver.navigate().to("http://executeautomation.com/blog/custom-testng-library-for-appium/#more-1562"); 
    } 

    //@Parameters({"searchText1","searchText2"}) 
    //@Test 
    public void searchText(String text1, String text2) 
    { 
     driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 
     driver.findElement(By.className("search-field")).sendKeys(text1); 

     driver.findElement(By.className("search-field")).clear(); 

     driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 
     driver.findElement(By.className("search-field")).sendKeys(text2);  
    } 
} 

자사가 실행되지

public class DynamicTestNG { 

public void runTestNGTest(Map<String,String> testngParams) { 

    //Create an instance on TestNG 
    TestNG myTestNG = new TestNG(); 

    //Create an instance of XML Suite and assign a name for it. 
    XmlSuite mySuite = new XmlSuite(); 
    mySuite.setName("MySuite"); 

    //Create an instance of XmlTest and assign a name for it. 
    XmlTest myTest = new XmlTest(mySuite); 
    myTest.setName("MyTest"); 

    //Add any parameters that you want to set to the Test. 
    myTest.setParameters(testngParams); 

    //Create a list which can contain the classes that you want to run. 
    List<XmlClass> myClasses = new ArrayList<XmlClass>(); 
    myClasses.add(new XmlClass("SampleClass")); 

    //Assign that to the XmlTest Object created earlier. 
    myTest.setXmlClasses(myClasses); 

    //Create a list of XmlTests and add the Xmltest you created earlier to it. 
    List<XmlTest> myTests = new ArrayList<XmlTest>(); 
    myTests.add(myTest); 

    //add the list of tests to your Suite. 
    mySuite.setTests(myTests); 

    //Add the suite to the list of suites. 
    List<XmlSuite> mySuites = new ArrayList<XmlSuite>(); 
    mySuites.add(mySuite); 

    //Set the list of Suites to the testNG object you created earlier. 
    myTestNG.setXmlSuites(mySuites); 

    TestListenerAdapter tla = new TestListenerAdapter(); 
    myTestNG.addListener(tla); 

    //invoke run() - this will run your class. 
    myTestNG.run(); 
    } 

public static void main (String args[]) 
{ 
    DynamicTestNG dt = new DynamicTestNG(); 

    //This Map can hold your testng Parameters. 
    Map<String,String> testngParams = new HashMap<String,String>(); 

    testngParams.put("searchtext1", "testdata1"); 
    testngParams.put("searchtext2", "testdata2"); 

    dt.runTestNGTest(testngParams); 
} 

}

그리고 SampleClass.java. 제게 실수를 알려주세요.

+0

완전한 클래스 이름은 패키지 이름으로 여기에 시도하십시오 .. myClasses.add (new XmlClass ("SampleClass")); –

+0

당신은 "그것의 실행되지 않는"정교 할 수 있습니까? – user1207289

답변

1

SampleClass 파일에서 @Test 주석의 주석 처리를 제거해야합니다. 그리고 SampleClass가 패키지 안에 있으면 절대 패키지 이름 + 클래스 이름이이 명령문에 지정됩니다.

myClasses.add(new XmlClass("com.some.package.SampleClass")); 

일반적으로 TestNG의 클래스는 확실한 플러그인이 실행 흐름에 포함 할 수 있도록 maven를 사용하는 경우 접미사 나 접두사 경우 "테스트"라는 레이블이 있습니다.

+0

답장을 보내 주셔서 감사합니다. –