微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果没有Assert.Assume..,则可以跳过/忽略Cucumber测试用例

如何解决如果没有Assert.Assume..,则可以跳过/忽略Cucumber测试用例

我有一个带有多个测试用例的Cucumber .feature 文件(使用“示例”)。
在某些情况下,我想跳过一些测试用例,只运行其中的几个。

注意: 用户应该能够选择要动态
跳过的测试用例 例如,他可以在第一次运行中决定跳过测试用例1,而下次决定跳过第2例。

Examples:
  | SERIAL_NO | ID                |
  | 1         | Create-Customer A |
  | 2         | Create-Customer B |
  | 3         | Create-Customer C |

我设法使用

Assume.assumeTrue(...)

唯一的问题是-代码抛出异常,我希望使日志保持清晰

有什么选择可以避免打印异常,而只是忽略测试用例? 或通过其他解决方案跳过它?

谢谢

解决方法

对于要跳过测试并使用@todo标记的每种情况,我都会拆分示例,例如:

   Scenario Outline: [test-scenario-001] Send a new form with request type  
   Given I preload the from using "request"
   And I select the 'Submit' button
   Then the response message "hello" is returned
   Examples:
    | request |
    | POST    |
   @todo
   Examples:
    | request | 
    | GET     |
    | PUT     |
    | DELETE  |

然后仅针对第一个Example运行方案,调出不作为该功能的一部分运行的标签:

-Dcucumber.options="--tags ~@todo"

要运行所有Example场景,请不要使用标记

,

最后,通过使用我提到的 Assert.assume(...)相同的方法,我找到了一个简单的解决方案,只需要清除异常堆栈跟踪,然后将其重新抛出即可。 / p>

在下面的代码中,您可以看到实际的变化只是我添加了catch块:

try
{
    Assume.assumeTrue("Some Condition...");
}
catch (AssumptionViolatedException e)
{
    // clearing stack trace,so it will keep logs clear,just print the name of exception
    e.setStackTrace(new StackTraceElement[] {});
    throw e;
}

现在不会将异常堆栈跟踪记录打印到日志中,因此日志保持整洁,而我只是看到了这一点:

org.junit.AssumptionViolatedException:得到:,预期:是

这对我来说已经足够了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。