2017-04-08 18 views
0

testNG.xmlファイルを通じて@BeforeClassメソッドにパラメータを渡そうとしていますが、スクリプトを実行するときにスクリプトも実行もエラーもコンソールに表示され、スクリプトが終了します。どこが間違っているのか分かりません。親切に私にこれを手伝ってください。testNG.xmlファイルを介して@BeforeClass&@AfterClassメソッドにパラメータを渡す方法

PS:私は、事前以下

に代わり@BeforeClass

感謝の@BeforeSuiteアノテーションを使用する場合、スクリプトが良い取り組んでいるが、私のコードスニペットです:

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

以下は私の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

を渡されたことを示すサンプルです:のhttp://www.seleniumeasy.com/はtestng-tutorials/parameterization-in-testng – kushal

+0

TestNGの問題だと私はちょうどそれを報告しました:https: //github.com/cbeust/testng/issues/1417 – juherr

+0

Juherr&Kushalさん、ありがとうございました。 – user7836878

答えて

0

ここに問題はないと思います。 TestNGはメソッドをクラスに含まないため、実際にBeforeClassメソッドを実行していません。 BeforeSuite大文字と小文字は異なる場合があります。その場合、スイートレベルの実行と、実行の一部である他のいくつかのクラスがTestメソッドを持つ可能性があります。そこで、TestNGはそれを実行します。

ここではこれを試してパラメータが適切に

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 
=============================================== 
関連する問題