我喜欢Javascript BDD工具Jasmine,因为它可以非常灵活地定义故事。Jasmine中的故事可以以一种方式进行组织,即先决条件故事在依赖于先前故事的故事之前运行。这使得测试代码具有高度的可重用性和可读性。
代码重用示例:
describe("parent story", function() {
var a = 1;
beforeEach(function(){
a++;
});
it("should equal to 2", function() {
expect(a).toBe(2);
});
describe("child story"), function(){
beforeEach(function(){
a++;
});
it("should equal to 3", function(){
expect(a).toBe(3);
});
});
});我做了一些关于在Java界使用这个概念的研究,发现在Java语言中最流行的BDD是JBehave。然而,在为儿童故事重用先前故事中的测试代码方面,它似乎没有Jasmine那么灵活。我不明白它如何像Jasmine示例那样将重用的变量从父故事传递到子故事中。
JBehave的GivenStories概念要在其他概念之前运行,但是我无法找到如何将在GivenStories中创建的状态传递给依赖于它们的状态。
JBehave能像Jasmine一样出色地完成这项工作吗?如果没有,Java中有没有其他BDD框架可以做同样的事情?
发布于 2014-05-03 13:53:23
JBehave和Jasmine并没有那么相似。Jasmine更类似于rspec。JBehave和Cucumber (另一个BDD框架,我认为更受欢迎)比Jasmine或rspec更相似。
尽管JBehave没有Jasmine的嵌套上下文,但它肯定可以在步骤之间传递状态。看看http://jbehave.org/:状态是在Steps类的实例变量中传递的。Cucumber的工作原理类似,尽管Ruby版本(我不熟悉Java Cucumber)更灵活,因为这种状态可以作为Cucumber World的实例变量从任何步骤传递到任何其他步骤。
不过要小心:在所有这些框架中,状态共享旨在允许您在多个步骤之外构建测试,而不是允许测试相互依赖。测试可以共享代码,但是一个测试是通过还是失败应该完全独立于另一个测试是通过还是失败。一旦你断言了什么,你就不在设置代码中了,你在测试,你不应该在另一个测试中重用你的状态。
https://stackoverflow.com/questions/14725343
复制相似问题