为JBehave测试设置夹具数据的最佳方法

时间:2016-06-23 17:48:51

标签: java bdd jbehave

我们假设我们有多个这样的测试:

Scenario:  trader is not alerted below threshold

Given a stock of symbol STK1 and a threshold of 10.0
When the stock is traded at 5.0
Then the alert status should be OFF

但扭曲的是所有"鉴定"必须在运行任何测试之前完成设置。最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

检查http://jbehave.org/reference/stable/story-syntax.html以查看故事文件中的Lifecycle:步骤。但请注意,这些是在每个场景之前/之后执行的。

还有@BeforeStory@AfterStory注释,它们使用起来非常明显,但您可能需要查看文档:{​​{3}}。

但是,您可能会觉得在故事文件中包含所有会更好......据我所知,您无法在故事文件中定义一个步骤,该步骤在执行之前运行这个故事。

我也遇到了缺乏'以前的这个功能,但我认为它没有实现的原因是它不适合BDD方法,场景应该是独立可执行和可理解的。这些步骤通常与某种环境准备(全局适用于所有场景)有关,这对于人类读者(利益相关者)并不重要,因此不应成为“用户故事描述”的一部分。 .story文件应该是哪个。

如果没有重大性能问题,我发现 - 从可读性的角度来看 - 最好在每个场景之前运行这些设置/拆卸的东西。如果您使用Lifecycle:步骤,则不会以重复方式结束,任何人类读者都可以通过阅读故事文件来执行测试。但那只是我的意见。

所以我认为你有这些选择:

  1. 使用LifeCycle:步骤
  2. 在每个方案之前/之后运行您的步骤
  3. 使用@BeforeStory@AfterStory注释
  4. 定义一个虚拟场景,将您的设置/拆除步骤作为故事文件的第一个/最后一个场景并命名,以便每个人都清楚它只是一个“技术”文件。场景。默认情况下,场景的顺序是固定的,因此这可能会起作用。 (hackish的...)
  5. Lifecycle:部分编写步骤,并破解这些步骤的实施,以便它们在故事中执行一次(甚至更多的是hackish)