我有一个TestNG测试,它在Eclipse中作为TestNG Suite运行时按预期工作,但在通过TestNG Ant Task(也通过Eclipse)运行时失败。当我通过命令行运行Ant时,同样的测试也失败了。构建成功,但测试失败并显示消息:
org.testng.TestNGException: @Test在方法登录时需要参数'homepage.title',但尚未标记为@Optional或已定义
参数在我的TestNG.xml中正确定义,正如我所提到的,如果我通过“Run as TestNG Suite”运行,则会通过相同的测试
提前致谢!我希望能够帮助其他人!
答案 0 :(得分: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在测试失败时失败。在这种情况下,如果构建编译,但是测试失败,构建仍将报告&#34;成功&#34;结果:
<testng haltonfailure="true">
<!-- ... -->
</testng>
haltonfailure
属性的默认值为&#34; false&#34;。
有关TestNG documentation以及如何使用parameters的详情,请参阅TestNG with Ant。