TestNG测试通过,但是当通过Ant运行时失败,即使构建成功

时间:2012-08-09 19:23:12

标签: ant testng

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

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

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

提前致谢!我希望能够帮助其他人!

1 个答案:

答案 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