testng - 与 TestNG 依赖项冲突并有条件地跳过测试
问题描述
我正在尝试在我的 XML 中实现 TestNG 依赖项(其中一个 ~50 个测试块依赖于另一个 ~30 个测试块通过),但是遇到了我之前实现的跳过注释的问题。似乎在跳过测试时也会触发依赖关系,而不仅仅是在测试失败时。有解决方法吗?我想忽略跳过的测试结果并继续运行依赖测试,并且只有在测试显式失败时才调用依赖。
来自 TestNG 文档:
硬依赖。您所依赖的所有方法都必须已运行并成功才能运行。如果您的依赖项中至少发生一次故障,您将不会被调用并在报告中标记为 SKIP。
解决方案
固定的,有点。将以下代码添加到 afterInvocation 方法会将测试结果从 SKIP 更改为 PASS。这允许相关测试运行,但从您的测试结果中隐藏任何跳过的测试。在我们的例子中,这是更可取的。如果有更好的解决方案不能掩盖跳过的测试,我会很高兴听到它!
if (method.getTestMethod().getRetryAnalyzer() != null && Retry.getRetryCount() == 0) { // check if the method was skipped without retries (due to skip annotation)
ITestContext tc = Reporter.getCurrentTestResult().getTestContext();
tc.getSkippedTests().addResult(method.getTestResult(), Reporter.getCurrentTestResult().getMethod());
tc.getSkippedTests().getAllMethods().remove(Reporter.getCurrentTestResult().getMethod());
SMAPLogger.Info("Test result: Test Skipped -- marking test as passed to avoid dependency issues");
Reporter.getCurrentTestResult().setStatus(ITestResult.SUCCESS);
tc.getPassedTests().addResult(method.getTestResult(), Reporter.getCurrentTestResult().getMethod());
tc.getPassedTests().getAllMethods().remove(Reporter.getCurrentTestResult().getMethod());
}
推荐阅读
- watson-knowledge-catalog - Can I select a specific data center in Japan for Watson Knowledge Catalog?
- sql - SQL MERGE: Is it possible to ignore a MATCH?
- wordpress - 仅显示自定义分类的主要类别 (yoast)
- javascript - PDF Javascript中的字符串到二维数组
- c# - 如何使对象跟随航路点到中心点?
- python - 获取 GBDT 模型树信息的信息
- xamarin.forms - xamarin 表单:将 jarray 空值发布到 Web api
- r - “匹配错误(x,表,nomatch = 0L):'匹配'需要向量参数”
- java - ByteBuddy 附加到本地正在运行的进程
- java - 比较 Java 中的状态