Jasmine 是一个不错的 JavaScript 单元测试框架。它不仅测试您的代码,还提供了一种很好的记录方式:
- 使用流利的 BDD-ish 方式来定义本身几乎读起来像文档的测试
- 测试报告读起来也像文档
我想知道 C# 和/或 Java 是否存在类似的东西。
我刚刚在 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
同样,我不能保证这一点,因为我没有使用它,但我希望这将有助于其他人做出明智的决定。
高温高压
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);
});
});
}}
一个非常流行的测试 Java(和 Groovy)的框架是Spock,它的测试读起来也像书面规范。
查看Cucumber-JVM以实现 BDD。它基于 Java,但也适用于基于 JVM 的语言(Scala、Groovy)。
如果使用 Jenkins 等持续集成系统,可以使用名为Cucumber Reports的报告插件。
Java 的等价物是JBehave
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));
});
});
});
}
}