2017-04-08 1 views
0

testNG.xml 파일을 통해 @BeforeClass 메서드에 매개 변수를 전달하려고하지만 스크립트를 실행해도 스크립트가 실행되지 않으며 오류도 발생하지 않습니다. 콘솔에 표시되면 스크립트가 종료됩니다. 내가 어디서 잘못 될지 모르겠습니다. 친절하게 도와주세요.testNG.xml 파일을 통해 @BeforeClass 및 @AfterClass 메서드에 매개 변수를 전달하는 방법

PS :

BaseSetup.java

public class BaseSetup { 

private WebDriver driver; 
private String userdir = System.getProperty("user.dir"); 
private void SelectBrowser(String browsername){ 

    switch(browsername){ 

    case "GoogleChrome": 

     //initChromeBrowser(); 

     break; 

    case "FireFox": 

     initFireFoxBrowser(); 

     break; 

    default: 
     System.out.println("Wrong input");  
    } 

} 

private void initChromeBrowser(){ 

    System.setProperty("webdriver.chrome.driver", userdir +"\\chromedriver.exe"); 

    driver = new ChromeDriver(); 

    launchApp(); 

} 
private void initFireFoxBrowser(){ 

    System.setProperty("webdriver.gecko.driver", userdir +"\\geckodriver.exe"); 

    driver = new FirefoxDriver(); 

    launchApp(); 

} 

private void launchApp(){ 

    driver.manage().window().maximize(); 

    driver.get("https://www.google.co.in"); 
} 

@Parameters({"browsername"}) 

@BeforeClass 

public void LaunchBrowser(String browsername){ 

     SelectBrowser(browsername);  
} 
} 
: 나는 아래

사전 대신 @BeforeClass

감사의 @BeforeSuite 주석을 사용할 때 스크립트가 잘 작동하고 나의 코드입니다

아래는 testNG.xml 코드입니다.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="SampleTestSuite"> 
<test name="SampleTest"> 

<classes> 

    <class name="com.pac.base.BaseSetup"> 
    <parameter name="browsername" value="FireFox"> </parameter>  
    </class> 

    </classes> 

    </test> <!-- Test --> 
    </suite> <!-- Suite --> 

+0

을 통과하는 것을 보여주는 샘플입니다 testng-tutorials/parameterization-in-testng – kushal

+0

TestNG 문제인 것 같아서 방금보고했습니다 : https : //github.com/cbeust/testng/issues/1417 – juherr

+0

Juherr & Kushal에게 감사의 말을 전하고 싶습니다. – user7836878

답변

0

여기에는 문제가 없다고 생각합니다. TestNG는 클래스에 @Test 메서드가 포함되어 있지 않기 때문에 실제로 BeforeClass 메서드를 실행하지 않습니다. BeforeSuite 대소 문자를 구분하지 않습니다.이 경우 해당 스위트 수준 실행을 추측하고 실행의 일부인 다른 클래스가 메서드를 가질 가능성이 있습니다. 그래서 TestNG가 그것을 실행합니다. HTTP : //www.seleniumeasy.com/ 여기

매개 변수이 시도 제대로

import org.testng.annotations.BeforeClass; 
import org.testng.annotations.Parameters; 
import org.testng.annotations.Test; 

public class ParameterizedClass { 
    @Parameters({"browsername"}) 
    @BeforeClass 
    public void setup(String browsername) { 
     System.err.println("Browser name in @BeforeClass is " + browsername); 
    } 

    @Parameters({"browsername"}) 
    @Test 
    public void testMethod(String browsername) { 
     System.err.println("Browser name in @Test is " + browsername); 
    } 

} 

스위트 룸 파일

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="1265_Suite" parallel="false" verbose="2"> 
    <test name="92" parallel="false" preserve-order="true"> 
     <classes> 
      <class name="com.rationaleemotions.stackoverflow.ParameterizedClass"/> 
      <parameter name="browsername" value="firefox"/> 
     </classes> 
    </test> 
</suite> 

출력

... 
... TestNG 6.11 by Cédric Beust ([email protected]) 
... 
Browser name in @BeforeClass is firefox 
Browser name in @Test is firefox 

=============================================== 
1265_Suite 
Total tests run: 1, Failures: 0, Skips: 0 
===============================================