Lambda Behave行为测试框架
如果你是一个Java开发人员,你已经看到了在其他编程语言如spock 或 jasmine 这样可用的流畅的现代的规范框架,而现在 Lambda Behave 行为测试方式非常适合你。其目标是比现在使用的JUnit能使测试变成一个更加愉快的经历。
Lambda Behave是一个基于Java 8的行为测试框架,其特点是:
如同英文一样可阅读性
鼓励使用长和描述性的句子,而不是几句话进行测试。
API是流畅的,几乎可以通过IDE自动完成功能辅助发现完成。
public class StackSpec {{
Stack stack = new Stack<>();
describe("a stack", it -> {
it.shouldSetup(stack::clear);
it.shouldTearDown(stack::clear);
it.should("be empty when created", expect -> {
expect.that(stack).isEmpty();
});
每个标准测试都是以Suite.describe方法开始,然后你就可以借助IDE自动完成,下面是一些技术细节:
如果你指定以恶搞属性property,使用it.should.
如果你要描述一个熟悉期望值,使用expect.that. 这会给你一个流畅API限制值的类型,预期系统是基于hamcrest. 通过expect.that(value).is() 使用Hamcrest的规则匹配。
如果你要setup 或 teardown,使用useit.shouldSetup 和 it.shouldTearDown.
如果你要在每个suit中实现setup 或teardown,使用useit.shouldInitialize 和 it.shouldComplete.
虽然Java 8 lambdafied APIs 并不能很好处理exception,但是你可以在我们回调中抛出exception,相应错误将会被报告。
Lambda Behave测试API是流畅且类型安全的,并不依赖反射魔术。
describe("a pair of numbers", it -> {
it.uses(2, 4)
.and(4, 8)
.toShow("%d / %d is two", (expect, x, y) -> {
expect.that(y / x).is(2);
});
});
Maven依赖配置:
com.insightfullogic
lambda-behave
0.1
test
通过下面代码可与Junit整合:
@RunWith(JunitSuiteRunner.class)
public class StackSpec {{