java - 使用 JBehave 编写逻辑测试有意义吗?

标签 java unit-testing bdd collaboration jbehave

我最近遇到了 JBehave,我认为我们应该使用它。所以我请来了我们团队的测试人员,他也认为应该使用这个。

以此为出发点,我要求测试人员为测试应用程序(Bob 大叔的保龄球游戏 Kata)编写故事。在一天结束时,我们会尝试将他的测试映射到保龄球比赛中。

我期待这样的测试:

Given a bowling game
When player rolls 5
And player rolls 4
Then total pins knocked down is 9

相反,测试人员进行了“逻辑测试”,换句话说,他并没有那么具体。但是,用他的话来说,这是一个有效的测试。

Given a bowling game
When player does a regular throw
Then score should be calculated appropriately

我的问题是模棱两可,什么是“常规 throw ”?什么是“适当”?如果其中一个步骤失败,这意味着什么?

但是,测试人员说人类确实理解并且我在寻找“物理测试”的地方,写起来更麻烦。

我可能可以将“常规”映射为滚动两次 4(仍然没有备用,也没有罢工),但感觉我又在做一个我不想做的翻译。

所以我想知道,您是如何处理这个问题的?您如何编写 JBehave 测试?当不是编写这些测试并且您必须将它们映射到您的代码时,您是否有过这样的经历?

最佳答案

他的测试是有效的,但需要一定的领域知识,这是任何框架都不具备的。自动化测试应该是明确的,将它们视为示例。编写它们比编写“逻辑测试”成本更高,但从长远来看这是值得的,因为它们可以非常快速地随意重放,并提供即时反馈。

你应该和他一起写第一个测试,把它放在正确的方向。或许您可以将您的测试交给他,并要求他通过添加新测试来增加覆盖率。

关于java - 使用 JBehave 编写逻辑测试有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7452960/

相关文章:

unit-testing - Clojure - 测试 Pedestal 路线

node.js - 使用 Jest 模拟 Express Controller 内的 fs.existsSync

java - 使用 BeanUtils 在 bean 之间复制具有不同名称的属性

java - 从 ArrayList 中删除特定的矩形

java - Java可以将方法存储在数组中吗?

java - JBehave:表内的参数,例如 <TODAY>

ruby-on-rails - ruby cucumber 测试实践

java - java xml 解析器编码时出错

python - 如何为 Django 测试自动创建 postgis 数据库?

ruby - cucumber 从 3 列表中读取数据?