Jasmine for C#和/或Java

Jasmine for C#和/或Java,c#,java,jasmine,C#,Java,Jasmine,Jasmine是一个很好的JavaScript单元测试框架。它不仅测试您的代码,还提供了一种很好的方法来记录代码: 使用流畅的BDD-ish方法定义测试,其本身几乎读起来像文档 测试报告读起来也像一份文档 我想知道对于C#和/或Java是否存在类似的东西。Java的等价物应该是一个非常流行的测试Java(和Groovy)的框架,它的测试读起来也像是书面规范。看看如何实现BDD。它是基于Java的,但也可以与基于JVM的语言(Scala、Groovy)一起使用 如果使用像Jenkins这样的持

Jasmine是一个很好的JavaScript单元测试框架。它不仅测试您的代码,还提供了一种很好的方法来记录代码:

  • 使用流畅的BDD-ish方法定义测试,其本身几乎读起来像文档
  • 测试报告读起来也像一份文档

我想知道对于C#和/或Java是否存在类似的东西。

Java的等价物应该是一个非常流行的测试Java(和Groovy)的框架,它的测试读起来也像是书面规范。

看看如何实现BDD。它是基于Java的,但也可以与基于JVM的语言(Scala、Groovy)一起使用

如果使用像Jenkins这样的持续集成系统,则有一个名为available的报告插件。

我刚刚在GitHub上遇到过。我从未使用过它,但我认为这可能会帮助像我这样希望在C#单元测试中体验Jasamine的人

从GitHub:

NJasmine是一种RSpec-ish测试语言,其灵感来自用于C#/.Net编程的javascript测试库Jasmine()

在Nuget上提供:

同样,我不能保证这一点,因为我没有使用过它,但我希望这将有助于其他人做出明智的决定

HTH是一个Java测试框架,具有简洁的语法,广泛使用Java8箭头函数。它是使用JUnit runner执行的

hompage的代码示例:

@RunWith(OleasterRunner.class)
公共类引入测试{{
描述(“一个套房”,()->{
它(“包含一个带有期望的规范”,()->{
期望(40+2)、托夸尔(42);
});
});
}}
将类似于BDD,带有@DisplayName、@Nested等等。你可以看看

GA版本还没有发布,但应该很快就会发布(于2016年底发布)。

是Ruby的RSpec BDD的一个端口

@RunWith(Ginkgo4jRunner.class)
public class MyTests {

  private SystemUnderTest systemUnderTest;

  private int range;

  private bool score;

  {
    Describe("SystemUnderTest", () -> {
      BeforeEach(() -> {
        systemUnderTest = new SystemUnderTest();
      });
      Context("#Fire", () -> {
        JustBeforeEach(() -> {
          score = systemUnderTest.Fire(range));
        });
        Context("given a range", () -> {
          BeforeEach(() -> {
            range = 10;
          });
          It("should return a winning score!", () => {
            assertThat(score, is(true));
          });
      });
    });
  }
}

什么是有趣的双括号语法?我承认我以前没见过。直接嵌套到类中的块称为实例初始化块,在构造函数之前执行。有关详细信息,请参阅或。它是在Java8之前引入的。很高兴看到JUnit现在有了对它的内置支持。使通过“默认”测试框架在Java中执行BDD TDD成为可能
@RunWith(Ginkgo4jRunner.class)
public class MyTests {

  private SystemUnderTest systemUnderTest;

  private int range;

  private bool score;

  {
    Describe("SystemUnderTest", () -> {
      BeforeEach(() -> {
        systemUnderTest = new SystemUnderTest();
      });
      Context("#Fire", () -> {
        JustBeforeEach(() -> {
          score = systemUnderTest.Fire(range));
        });
        Context("given a range", () -> {
          BeforeEach(() -> {
            range = 10;
          });
          It("should return a winning score!", () => {
            assertThat(score, is(true));
          });
      });
    });
  }
}