我之前已经写过有关BDD的选项 。 我已经描述了您可以选择多种方法 。 在上一篇文章发表时,我为SpectrumBDD做出了巨大贡献, SpectrumBDD是JUnit 4的Java 8功能性BDD测试库。
几年后,我可以选择对不同的项目使用不同的BDD工具,我在哪里定居?
提示开普敦的问题
我收到某人的消息,该人正在寻找BDD工具来推动他的新团队中的测试。 他的观点是,除非您使用BDD的技术专注于规范,否则即使编写单元测试,也可能会写出过多的代码。
大提示。 关注规范和可观察的行为,而不是执行测试的步骤或实现的内部。
虽然重新散布我作为博客文章发送给同行的电子邮件可能很便宜。 这里有一些亮点。
选择一个BDD框架
我认为选择BDD框架时有一些注意事项。
- 实施容易吗?
- 框架是否支持我们要使用的方法?
- 解决出现的问题容易吗?
- 这在行业中很常见吗? 换句话说,人们已经期望拥有这种技能吗?
我几年前奴役的SpectrumBDD是否适合上述条件?
Java自动化测试中的领先优势是什么?
我目前的感觉是,实际上只有两种领先的方法,您甚至可以串联使用:
- SerenityBDD –这是在JUnit4测试之上的报告/仪器规则,鼓励BDD样式测试
- 黄瓜 –这是一种鼓励以纯文本形式编写规范的工具,然后将其与测试执行代码段配合使用以使测试执行
何时使用工具进行单元测试
Spectrum是否可以参加单元测试?
我不认为单元测试应该用黄瓜编写。
我认为使用SpectrumBDD编写单元测试是可能的,但是有点笨拙-解决最终引用等一些功能问题。
我个人更喜欢使用BDD技术编写JUnit 5测试。 使用BDD Mockito和AssertJ来表达行为测试。
也就是说,普通的SerenityBDD可以用作JUnit4测试之上的工具层,并鼓励采用更多的BDD方法。 这可能是矫kill过正。
验收测试框架?
尽管BDD可以应用于所有级别,但是大型BDD框架似乎更适合验收测试。
对于在更高抽象级别上运行的验收测试-跨多个类的测试,或跨整个服务的测试,或跨多个服务的测试,那么我当前选择的工具是Cucumber,为此,它与Serenity合作可以带来一些额外的好处。
单独使用Cucumber是一个完全合理的解决方案,对于大多数开发人员而言不足为奇。
做出选择
您必须选择考虑您的工作方式并适合您的团队的工具。
我试图用Spectrum解决一些在Cucumber中笨拙的问题,但它仍然是一个很好的解决方案,即使我最后都没有使用。 您可以使用编写良好的Cucumber代码来解决这些问题,并且可以通过添加Serenity来获得有关测试Cucumber测试的帮助。
Serenity将您限制为JUnit 4,这可能是不使用它的原因。
在这种情况下,最好的决定通常是最明显,最无聊的-即如果他们抬头看着你,没人会评论你的选择。
翻译自: https://www.javacodegeeks.com/2020/03/the-bdd-spectrum.html