2012-08-09 44 views
0

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

org.testng.TestNGException: 参数' homepage.title '要求通过@Test上方法登录但仍未标记@optional或定义

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

在此先感谢!我希望能够帮助别人!

+0

这将真正有助于发布您的测试方法和Ant目标的示例。 – artdanil 2012-08-10 04:48:39

+0

是的,对不起。我越来越接近,然后分心。 – Aaron 2012-08-10 15:49:12

回答

0

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

@Test 
public void myTest(String myParameter){ 
} 

有几种方法可以解决这个问题。 其中之一是指定参数注释,并通过JVM ARG在任一的testng.xml或在通过参数:

@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属性的默认值是“假”。

有关parameters以及如何使用TestNG with Ant的更多信息,请参阅TestNG documentation

+0

在build.xml中指定jvmarg的确有窍门。我已经在我的测试方法中使用了参数注释,并在testng.xml中指定了值。有趣的是,TestNG本身就可以正常工作,但Ant仍然希望我提供jvmarg。谢谢(你的)信息! – Aaron 2012-08-10 15:47:27

+0

奇怪。通常在testng.xml中有'@ Parameters'注释和指定参数就足够了。你是否也传递testng.xml作为Ant目标在'xmlfileset'元素中运行测试? – artdanil 2012-08-10 17:02:58

+0

是的,现在它工作正常。再次感谢......花了几天时间让框架连接起来,我甚至还没有写任何测试呢! – Aaron 2012-08-10 20:17:42

相关问题