我试图以一种非常简单的方式使用BDD,以便最大限度地减少Java代码的数量.我想创建两个文件,一个是我的故事:
Given user is named "John Doe" And user is authenticated When user changes his password to "a1b2c3" Then user password equals to "a1b2c3"
接下来,我创建一个Java类:
public class UserManipulator { @Given("$user is named $name") public User shouldExistOrBeCreated(String name) { User user = //... return user; } @Given("$user is authenticated") public void shouldBeLoggedIn() { // ... } @When("$user changes his password to $pwd") public void shouldChangePassword(User user, String pwd) { // ... } @Then("$user password equals to $pwd") public void shouldHaveThisPassword(User user, String pwd) { assertEquals(user.getPassword(), pwd); } }
就是这样.我不想再有任何文件,还有单元测试.我想要一些BDD框架来查找我的故事文件,解析我的所有Java文件,然后逐个运行它们.有可能实现吗?
PS.这里重要的是在我的其他故事中可能重用 Java方法.例如,这是故事2:
Given user is named "Michael Doe" <-- reuse When user adds $100.00 to his account Then user account balance is $100.00
haylem.. 5
你想看看:
easyb,
或JBehave蚂蚁的入门指南,
也许是Specatular及其入门指南.
此外,这篇关于Java和Groovy中的BDD的演示可能会引起关注.
你想看看:
easyb,
或JBehave蚂蚁的入门指南,
也许是Specatular及其入门指南.
此外,这篇关于Java和Groovy中的BDD的演示可能会引起关注.
我们使用Cucumber,这是一个Ruby框架,但通过将JRuby捆绑到您的项目中,您可以轻松访问Java对象.它确实意味着你在Ruby中编写你的步骤定义,但它也最小化你写的Java的数量:)
Cucumber中的故事格式正如您在示例中所描述的那样,故事情节的重复使用是微不足道的.
机器人框架可能是有意义的.您可以在这里阅读用户指南中的详细信息:http: //robotframework.googlecode.com/svn/tags/robotframework-2.5.4/doc/userguide/RobotFrameworkUserGuide.html#behavior-driven-style
Robotframework是用python编写的,新的关键字可以用python或jython实现.
还有一篇关于RF用于ATDD的论文:http://www.niksula.cs.hut.fi/~jprantan/thesis/thesis_juha_rantanen.pdf