2

で使用testNGしていSelenium webdriver2.0ます。

私のtestNG.xml中で私は持っています

<suite data-provider-thread-count="2" name="selenium FrontEnd Test" parallel="false" skipfailedinvocationCounts="false" thread-count="2">
  <parameter name="config_file" value="src/test/resources/config.properties/"/>
  <test annotations="JDK" junit="false" name="CarInsurance Sanity Test" skipfailedinvocationCounts="false" verbose="2">
    <parameter name="config-file" value="src/test/resources/config.properties/"/>
    <groups>
      <run>
        <include name="abstract"/>
        <include name="Sanity"/>
      </run>
    </groups>
    <classes>
    </classes>
  </test> 
</suite>

Java ファイル内

@BeforeSuite(groups = { "abstract" } )
@Parameters(value = { "config-file" })
public void initFramework(String configfile) throws Exception 
{
    Reporter.log("Invoked init Method \n",true);

    Properties p = new Properties();
    FileInputStream  conf = new FileInputStream(configfile);
    p.load(conf);

    siteurl = p.getProperty("BASEURL");
    browser = p.getProperty("BROWSER");
    browserloc = p.getProperty("BROWSERLOC");

}

エラーを取得する

AILED CONFIGURATION: @BeforeSuite initFramework org.testng.TestNGException: パラメータ 'config-file' は、メソッド initFramework の @Configuration で必要ですが、@Optional とマークされていないか、で定義されていません

@Parametersリソースファイルの使い方

4

2 に答える 2

13

config-fileパラメータが<suite>レベルで定義されていないようです。これを解決するには、いくつかの方法があります。1.<parameter>要素が<suite>タグ内で定義されているが、タグの外側で定義されていることを確認し<test>ます。

 <suite name="Suite1" >
   <parameter name="config-file" value="src/test/resources/config.properties/" />
   <test name="Test1" >
      <!-- not here -->
   </test>
 </suite>

2.で指定されているかどうかに関係なく、Javaコードのパラメーターのデフォルト値を使用したい場合は、メソッドパラメーターに注釈をtestng.xml追加できます。@Optional

@BeforeSuite
@Parameters( {"config-file"} )
public void initFramework(@Optional("src/test/resources/config.properties/") String configfile) {
    //method implementation here
}

編集(投稿されたtestng.xmlに基づく):

オプション1:

<suite>
  <parameter name="config-file" value="src/test/resources/config.properties/"/>
  <test >
    <groups>
      <run>
        <include name="abstract"/>
        <include name="Sanity"/>
      </run>
    </groups>
    <classes>
      <!--put classes here -->
    </classes>
  </test> 
</suite>

オプション2:

@BeforeTest
@Parameters( {"config-file"} )
public void initFramework(@Optional("src/test/resources/config.properties/") String configfile) {
    //method implementation here
}

いずれにせよ、名前がほとんど同じで、値が同じで、スコープが異なる2つのパラメーターを使用しないことをお勧めします。

于 2012-05-21T19:40:25.277 に答える