Oli*_*POP 29 testing bdd automated-tests jbehave spock
对于正在进行的项目和改进我们的开发过程,我们考虑采用TDD作为开发理念.在研究最佳实践以及如何向同事/开发人员"推销"新方法的过程中,我遇到了BDD,并发现它更适合我们需要的东西,并且不知何故是TDD的下一次迭代.问题是到目前为止我只尝试过Dan North,JBehave开发的工具,我不能说我很惊讶.
设置在我看来很麻烦,我找不到非常合适的文档.在另一方面我试着也斯波克的常规工具,到现在我挺喜欢.
问:有没有适合BDD的工具?
问:你会使用spock来处理引入另一种语言的开销吗?
sod*_*ody 40
行为驱动开发只是一种无需任何工具即可使用的技术.您可以用BDD样式编写测试 - 例如should,使用此方法启动测试方法并引入一些单独的功能.When和then部分可以只用注释替换,例如
@Test
public void should_do_something() {
// given
Something something = getSomething();
// when
something.doSomething();
// then
assertSomething();
// when
something.doSomethingElse();
// then
assertSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)
我对上述框架的看法:
JBehave的问题在于测试看起来像一个复杂的宇宙飞船.另一方面,它有适合您的规格的输出.
spock真的很酷.紧凑的语法,漂亮的输出,许多功能,使用强大的groovy语言编写,这意味着可以与geb一起使用.但它很时髦,对某些人来说非常重要.
scalatest(用scala编写)和easyb(用groovy编写)都有与spock相同的缺点."......应该......"和"给定...然后"符号.规范在.story文件中,步骤实现在Java类中.这种方法作为定义规范的协作和通信工具非常有效,但对于低级编码通常会花费太多开销.
我还认为最成功的Java BDD框架是那些不是用Java编写的,因为Java语言没有Groovy或Scala创建的DSL(域特定语言)创建的灵活性.
Jan*_*fer 15
作为JGiven的作者,我不得不反对Java没有足够的灵活性来创建DSL.在JGiven中,BDD测试看起来如下:
@Test
public void users_can_login {
given()
.a_registered_user()
.and().the_login_page_is_shown();
when()
.the_user_enters_correct_credentials()
.and().the_login_button_is_pressed();
then()
.the_welcome_page_is_shown();
}
Run Code Online (Sandbox Code Playgroud)
JGiven与JUnit或TestNg一起使用,您可以用普通Java编写测试.
dkl*_*dkl 13
除非您的产品所有者/ qa /客户需要能够阅读测试,否则请使用Spock.它是一个非常简单的工具,但提高了测试的可读性.由于它强大的功能,你不需要Mockito,Hamcrest和AssertJ.它具有极好的参数化测试.事实上,它"只是"一个更好的JUnit - 一个自动执行简单任务的通用工具,无论是单元测试,集成测试还是验收测试.
害怕Groovy?为什么?它与java非常相似.学到的越多,代码就越有表现力,也越短.您的测试将更短,更易读.Groovy是JVM更好的一面的门户药物.
不喜欢动态语言?好吧,它是测试,每次提交后测试都由CI服务器运行,对吧?如果您的代码中断,您将在几分钟后知道它.没有CI服务器或没有定期运行测试?然后不要费心选择测试框架并修复您的过程.破损的测试是没用的,如果你不经常进行测试,它们很快就会破裂.
如果需要,可以使用JBehave/Cucumber; 否则,请使用Spock.
| 归档时间: |
|
| 查看次数: |
25666 次 |
| 最近记录: |