参数'google'是方法setUp上的@Configuration所必需的,但尚未标记为@Optional或已定义

时间:2015-02-26 05:42:20

标签: parameters testng

关于相同的错误有几个线程,但它们没有激活,我认为最后它们是活动的是大约1年前所以我打开新线程。

Testng.xml : -

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" verbose="1">
    <parameter name="google" value="http://www.ezeego1.co.in/" />
    <test name="Test">
        <classes>
            <class name="selenium.karma.bu.DriverApp" />
            <class name="selenium.karma.bu.ReadSuite" />
        </classes>
    </test> <!-- Test -->
</suite> <!-- Suite -->

DriverApp.java : -

public class DriverApp {

public static WebDriver driver;

@Parameters("google")
@BeforeSuite
public void setUp(String appUrl) throws Exception{

    ProfilesIni prof = new ProfilesIni();
    FirefoxProfile p = prof.getProfile("default");
    p.setPreference("extensions.headertool.preferencies.editor", "sm_universalid: swkv8851\nftusergivenname: vidushi \nftusersn: shukla\nftapplicationroles: Admin\nftusercredentials: ES,PL\n\n");;
    p.setPreference("extensions.headertool.preferencies.onoff", true);

     driver = new FirefoxDriver(p);
     driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

    driver.get("http://10.171.23.218:3080/karmaGui/karmaGui/KarmaGui.html?locale=en#Main") ;
    Thread.sleep(5000);
    driver.manage().window().maximize();
}

我们已将它扩展到另一个java类readsuite.java。

当我用testng执行我的ReadSuite.java时,我收到以下错误: -

Total Rows Accross the sheets : 0
FAILED CONFIGURATION: @BeforeSuite setUp
org.testng.TestNGException: 
Parameter 'google' is required by @Configuration on method setUp but has not been marked @Optional or defined
in C:\Users\swkv8851\AppData\Local\Temp\testng-eclipse--1721497351\testng-customsuite.xml
    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.SuiteRunner.privateRun(SuiteRunner.java:277)
    at org.testng.SuiteRunner.run(SuiteRunner.java:240)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
    at org.testng.TestNG.run(TestNG.java:1057)
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)

这里

C:\ Users \ swkv8851 \ AppData \ Local \ Temp \ testng-eclipse - 172149735 enter code here 1 \ testng-customsuite.xml在运行时创建,内容为

<suite name="Default suite">
    <test verbose="2" name="Default test">
        <classes>
            <class name="selenium.karma.bu.ReadSuite" />
        </classes>
    </test>
    <!-- Default test -->
</suite>
<!-- Default suite -->

请帮我识别错误。

当我在driverapp.java中评论@parameter和@Beforesuite时,我没有收到此错误,但是我的浏览器没有被调用。

4 个答案:

答案 0 :(得分:1)

似乎TestNG以编程方式创建了testng.xml,因为它无法找到您的testng.xml,或者您将项目作为TestNG Test而不是 testng.xml运行文件

答案 1 :(得分:1)

如果您只想运行套件xml文件,则需要选择套件文件并选择Run As-&gt; TestNG Suite。

但是,如果要选择特定测试并使用套件文件的非测试部分,即套件/监听器/参数部分,则可以通过转到Project Properties-&gt;将此文件设置为模板xml。 TestNG - &gt;模板XML文件(在这里给出你的testng xml的绝对路径)

答案 2 :(得分:1)

虽然它似乎是一个非常古老的帖子,但我正在分享对我有用的解决方案。

基本上,它需要两个TestNG Run'Class'和'Suite'

的设置

设置TestNG Run'Class' 第1步:转到项目=&gt;运行As =&gt;运行配置=&gt; '测试'标签
第2步:选中“类”选项。它应该是带有所需'.java'文件的集合    例如'functionalTestCases.java'在包'testCases'上,然后'Class'将被设置为'testCases.functionalTestCases.java' 第3步:验证“名称”字段。 例如,它可以是'functionalTC' 步骤4:使用“应用”按钮保存更改

设置TestNG Run'Suite' 第1步:转到项目=&gt;运行As =&gt;运行配置=&gt; '测试'标签
第2步:选中“套房”选项。它应该是具有所需'testng.xml'文件路径的集合 第3步:验证“名称”字段 例如,它可以是'projectname_testng.xml' 步骤4:使用“应用”按钮保存更改

正确保存这些设置后,使用'projectname_testng.xml'

运行项目

另外,我在'testCases.functionalTestCases.java'中使用TestNG注释作为'@BeforeClass'的方法(引用并检查'testng.xml'传递的'参数')

答案 3 :(得分:0)

这可能是因为@Test运行。 您需要在套件级别

运行它