2016-03-01 46 views
3

更新:我也TestNG中hereGitHub project开了错误怪异的行为与依赖 - 没有错误引发


在定义我的测试一个我已经做了愚蠢排印错误。我不小心写了这样的注释:

@Test(dependsOnMethods = {"method1, method2"}, alwaysRun = true) 

您是否看到错误?我当然没有(因为真正的方法名称也更长),它使我浪费了近2个小时,因为TestNG提供没有帮助这一点。

为什么它不提供帮助: 由于这个错误的结果,没有错误提高后,一切编译很好,但是当我的套房是关于来看,它只是跳过所有的测试,没有任何迹象为什么:

__PLAN___ 
Total tests run: 0, Failures: 0, Skips: 0 

在logs/xmls中也没有地方显示某些东西可能是错的。

只有经过很长一段时间我注意到,我的意思是写:

@Test(dependsOnMethods = {"method1", "method2"}, alwaysRun = true) 

含义,该测试实际上取决于2种方法,除了一个漫长的,这显然是不存在的。

我现在试图添加到我们的框架中的选项来提醒用户这种错误,所以它不会发生在更多的人(我们是一个大公司)。

问:我在哪里可以找到,在TestNG的代码也许,代码/文档,让我其中TestNG的失败事件,并就此采取行动?有必须是那里有一些地方TestNG检查套件,并决定不运行测试,因为这个问题,它在哪里?

+0

好笑。这个错误报告似乎表明了相反的情况:测试失败,因为找不到现有的方法。 https://github.com/cbeust/testng/issues/949。 – Gimby

+0

@Gimby有趣的,虽然我不会说*完全相反*,因为这种情况稍微不复杂(没有继承问题等) – Idos

+0

它可能仍然值得添加您的案例 – Gimby

回答

1

错误被忽略的原因是因为您在@Test声明中指定了alwaysRun=true。从Test.java

/** 
* If set to true, this test method will always be run even if it depends 
* on a method that failed. This attribute will be ignored if this test 
* doesn't depend on any method or group. 
*/ 
public boolean alwaysRun() default false; 

设置alwaysRun=false或从@Test声明中删除它完全应该给你你期待的错误。

要回答你TestNG检查缺失依赖关系的问题,它在MethodHelper.java#findDependedUponMethods(ITestNGMethod , ITestNGMethod[])。正如你所看到的,将alwaysRunignoreMissingDependencies设置为true(它们都默认为false)会导致缺少方法依赖关系而被忽略。除非您有特定的理由,否则我会避免设置alwaysRun=true

+0

这是一个很好的答案,并且作品!谢谢! :) – Idos