Java JBehave工作起来像Jasmine吗?

Java JBehave工作起来像Jasmine吗?,java,unit-testing,jasmine,bdd,jbehave,Java,Unit Testing,Jasmine,Bdd,Jbehave,我喜欢JavaScriptBDD工具Jasmine,因为它可以非常灵活地定义故事。Jasmine中的故事可以采用这样的结构:先运行先决条件的故事,然后运行依赖于前一个故事的故事。这使得测试代码具有高度的可重用性和可读性 代码重用示例: describe("parent story", function() { var a = 1; beforeEach(function(){ a++; }); it("should equal to 2", function() {

我喜欢JavaScriptBDD工具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的givenstitories概念要比其他概念先运行,但是我找不到如何将givenstitories中的状态传递给依赖它们的那些状态


JBehave能像Jasmine一样出色地完成这项工作吗?如果没有,Java中是否还有其他BDD框架可以做同样的事情?

JBehave和Jasmine没有那么相似。茉莉花与rspec更相似。JBehave和Cucumber(另一个BDD框架,我认为更流行)彼此之间的相似性比Jasmine或rspec更大

尽管JBehave没有Jasmine的嵌套上下文,但它肯定可以在步骤之间传递状态。请看:状态在Steps类的实例变量中传递。Cucumber的工作原理类似,尽管Ruby版本(至少我不熟悉JavaCucumber)更灵活,但在这种状态下,可以作为Cucumber世界的实例变量从任何步骤传递到任何其他步骤

不过要小心:在所有这些框架中,状态共享都是为了让您能够通过多个步骤构建测试,而不是让测试相互依赖。测试可以共享代码,但是一个测试是否通过应该完全独立于另一个测试是否通过。一旦断言了某个内容,您就不再处于设置代码中,您正在进行测试,并且不应该将您的状态重新用于另一个测试