9

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

  • 使用流利的 BDD-ish 方式来定义本身几乎读起来像文档的测试
  • 测试报告读起来也像文档

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

4

7 回答 7

7

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

来自 GitHub:

NJasmine 是一种 RSpec-ish 测试语言,灵感来自用于 C# / .Net 编程的 javascript 测试库 Jasmine ( https://github.com/fschwiet/DreamNJasmine )。

given("some preconditions", () => {

    var range = 10;

    when("the system under test is ran", () => {

        var sut = new SystemUnderTest();

        bool score = arrange(() => sut.Fire(range));

        then("win!", () => {

            expect(() => score);
        });
    });
});

在 Nuget 上可用:http: //nuget.org/List/Packages/NJasmine

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

高温高压

于 2013-12-31T18:29:22.463 回答
4

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

来自 hompage 的代码示例:

@RunWith(OleasterRunner.class)
public class OleasterIntroductionTest {{
    describe("A suite", () -> {
        it("contains a spec with an expectation", () -> {
            expect(40 + 2).toEqual(42);
        });
    });
}}
于 2015-03-11T21:52:35.503 回答
3

JUnit 5将类似于 BDD,具有 @DisplayName、@Nested 等。您可以查看文档

GA 版本尚未发布,但应该很快就会发布(2016 年末宣布)。

于 2016-11-10T13:35:06.240 回答
2

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

于 2012-10-16T16:51:31.507 回答
2

查看Cucumber-JVM以实现 BDD。它基于 Java,但也适用于基于 JVM 的语言(Scala、Groovy)。

如果使用 Jenkins 等持续集成系统,可以使用名为Cucumber Reports的报告插件。

于 2012-10-16T16:54:53.777 回答
1

Java 的等价物是JBehave

于 2012-10-16T16:43:26.757 回答
0

Ginkgo4j是 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));
          });
      });
    });
  }
}
于 2018-06-06T04:57:05.877 回答