0

我有一个 TestNG 测试,在 Eclipse 中作为 TestNG Suite 运行时按预期工作,但在通过 TestNG Ant Task(也通过 Eclipse)运行时失败。当我通过命令行运行 Ant 时,同样的测试也失败了。构建成功,但测试失败并显示以下消息:

org.testng.TestNGException:@Test 在方法登录时需要参数“homepage.title”,但尚未标记为@Optional 或已定义

该参数在我的 TestNG.xml 中正确定义,正如我所提到的,如果我通过“Run as TestNG Suite”运行相同的测试将通过

提前致谢!我也希望能够帮助别人!

4

1 回答 1

0

看起来您为测试定义了一个参数,但没有为它指定一个值。

@Test
public void myTest(String myParameter){
}

有几种方法可以解决这个问题。一种是指定参数注释并在 testng.xml 或通过 jvm arg 中传递参数:

@Test
@Parameters({"myParameter"})
public void myTest(String myParameter){
}

testng.xml 文件:

<suite>
    <test>
         <parameter name="myParameter" value="myValue" />
         <classes>
              <class name="org.example.MyTestClass" />
         </classes>
    </test>
</suite>

或在 build.xml 文件中指定 jvmarg 属性:

<testng>
   <jvmarg value="-DmyParameter=myValue" />
   <!-- ... -->
</testng>

TestNG 建议的另一种方法是使用@Optional 注释参数:

@Test
@Parameters({"myParameter"})
public void myTest(@Optional("myValue") String myParameter){
}

另外要注意的是,您的构建可能通过的原因是您是否告诉 Ant 在测试失败时使构建失败。在这种情况下,如果构建编译,但有一个测试失败,构建仍然会报告“成功”结果:

<testng haltonfailure="true">
   <!-- ... -->
</testng>

属性的默认值为haltonfailure“false”。

有关参数以及如何将TestNG 与 Ant一起使用的更多信息,请参阅TestNG 文档

于 2012-08-10T04:45:18.220 回答