首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java的行为驱动开发-使用什么框架?

java的行为驱动开发-使用什么框架?
EN

Stack Overflow用户
提问于 2013-04-16 11:42:43
回答 6查看 29.5K关注 0票数 31

对于正在进行的项目和改进我们的开发过程,我们考虑采用TDD作为开发理念。在研究最佳实践和如何向我的同事/开发人员“推销”新方法时,我遇到了BDD,发现它更适合我们需要的东西,而且不知何故是TDD的下一次迭代。问题是,到目前为止,我只尝试了由丹北JBehave开发的丹北,我不能说我很惊讶。

在我看来,这个设置很麻烦,我找不到非常合适的文档。另一方面,我也尝试过斯波克这个groovy工具,到目前为止我还有点喜欢它。

Q:是否有合适的工具可用于BDD?

Q:,您会使用来处理引入另一种语言的开销吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-04-17 09:56:38

行为驱动开发只是一种无需任何工具就可以使用的技术。您只需编写BDD样式的测试-例如,用should启动测试方法,并使用该方法引入一些单独的特性。Whenthen部分可以用注释代替。

代码语言:javascript
复制
@Test
public void should_do_something() {
    // given
    Something something = getSomething();

    // when
    something.doSomething();
    // then 
    assertSomething();

    // when
    something.doSomethingElse();
    // then 
    assertSomethingElse();
}

我对上述框架的看法:

  • JBehave的问题是测试看起来像一艘复杂的宇宙飞船。另一方面,它对您的规范有很好的输出。
  • 斯波克真的很酷。使用强大的groovy语言编写的简洁语法、漂亮的输出和许多特性,这意味着与geb一起使用的可能性。,但,这是一个很好的方法,对某些人来说非常重要。
  • 鳞状 (用scala编写)和易趣 (用groovy编写)都有与spock相同的缺点。“应该.”和"Given...Then“符号。规范在.story文件中,步骤实现在Java类中。这种方法作为一种定义规范的协作和通信工具非常有效,但是对于低级别的编码来说通常会有太多的开销。

我还认为,Java最成功的BDD框架是那些没有用Java编写的框架,因为Java语言对于DSL (领域特定语言)的创建没有Groovy或Scala那样的灵活性。

票数 45
EN

Stack Overflow用户

发布于 2014-08-09 17:48:36

作为JGiven的作者,我不得不不同意sody的观点,即Java没有足够的灵活性来创建DSL。在JGiven中,BDD测试如下:

代码语言:javascript
复制
@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();
}

JGiven与JUnit或TestNg一起使用,您可以使用普通Java编写测试。

票数 16
EN

Stack Overflow用户

发布于 2014-01-28 21:34:55

除非您的产品所有者/qa/客户需要能够读取测试,否则使用斯波克。它是非常简单的工具,但提高了测试的可读性。由于它的强大特性,您不需要Mockito、Hamcrest或AssertJ。而且它有极好的参数化测试。实际上,它只是一个更好的JUnit --一个用于自动执行简单任务的通用工具,无论是单元测试、集成测试还是验收测试。

害怕Groovy?为什么?它非常类似于java。你学得越多,你的代码就越有表现力和更短。您的测试将更短、更易读。Groovy是通向JVM更好方面的网关药物。

不喜欢动态语言?这是测试,在每次提交之后,测试由CI服务器运行,对吗?如果您的代码中断,您将在几分钟后知道它。没有CI服务器或没有定期运行测试?然后,不要费心地选择一个测试框架,去修复您的过程。失败的测试是无用的,如果你不定期运行这些测试,它们很快就会崩溃。

如果需要,可以使用JBehave/Cucumber;否则,请使用Spock。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16036120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档