2017-06-26 17 views
0

私は、TestNGを使用して、同時クロスブラウザテストフレームワークのスタブを動かそうとしています。しかし、私は親クラスから@Parametersを取得し、私はしませんでしたTestNGは親クラスから@Parametersを継承します

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="1265_Suite" parallel="tests" verbose="2" thread-count="2" preserve-order="true"> 
    <test name="92" parallel="false" preserve-order="true"> 
     <classes> 
      <class name="com.javacodegeeks.testng.maven.BaseTest"/> 
      <class name="com.javacodegeeks.testng.maven.ChildTest"/> 
      <parameter name="browsername" value="chrome"/> 
     </classes> 
    </test> 
    <test name="93" parallel="false" preserve-order="true"> 
     <classes> 
      <class name="com.javacodegeeks.testng.maven.BaseTest"/> 
      <class name="com.javacodegeeks.testng.maven.ChildTest"/> 
      <parameter name="browsername" value="firefox"/> 
     </classes> 
    </test> 
</suite> 

BaseTest

public class BaseTest extends Assert { 

    protected String browser; 

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

ChildTest

public class ChildTest extends BaseTest { 

    @Test 
    public void test() { 
     System.out.println(browser); 
    } 
} 

TestNG.xml

Parameter 'browsername' is required by @Configuration on method setup but has not been marked @Optional or defined 
    at org.testng.internal.Parameters.createParameters(Parameters.java:155) 
    at org.testng.internal.Parameters.createParameters(Parameters.java:358) 
    at org.testng.internal.Parameters.createConfigurationParameters(Parameters.java:86) 
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:199) 
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138) 
    at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:175) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:107) 
    at org.testng.TestRunner.privateRun(TestRunner.java:767) 
    at org.testng.TestRunner.run(TestRunner.java:617) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:348) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:343) 
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:305) 
    at org.testng.SuiteRunner.run(SuiteRunner.java:254) 

得続けることができないようです十分な情報を見つけるどのようにこれを動作させるようにあなたのアイデアがあれば私はそれらを聞きたいと思います。

すでに確認さではなく、十分な情報: TestNG Annotations in a Superclass

答えて

0

BaseTestは無用であるべきと)<test>ノード上<parameter>ノードで再試行してください:主要なアイデアは、継承を使用することです

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="1265_Suite" parallel="tests" verbose="2" thread-count="2" preserve-order="true"> 
    <test name="92" parallel="false" preserve-order="true"> 
     <parameter name="browsername" value="chrome"/> 
     <classes> 
      <!--class name="com.javacodegeeks.testng.maven.BaseTest"/--> 
      <class name="com.javacodegeeks.testng.maven.ChildTest"/> 
     </classes> 
    </test> 
    <test name="93" parallel="false" preserve-order="true"> 
     <parameter name="browsername" value="firefox"/> 
     <classes> 
      <!--class name="com.javacodegeeks.testng.maven.BaseTest"/--> 
      <class name="com.javacodegeeks.testng.maven.ChildTest"/> 
     </classes> 
    </test> 
</suite> 
+0

(BaseTest)すべてのテストスイート用です。ここからBaseTestを削除すると、それは意味をなさないでしょう。 –

+0

すべてのテストクラスはBaseTestを拡張します。したがって、TestNGはイントロスペクションでそれを検出します。だから、それをスイートファイルに入れてもいなくても効果はありません。 – juherr

+0

私の解決策はあなたのパラメータの問題を修正していますか? – juherr

関連する問題