所以我最近使用FitNesse和Spock等工具进行了规范和测试.
我第一次尝试FitNesse,这是一次又一次无证件的挑战.幸运的是,我绊倒了Spock,很快就爱上了它.
话虽如此,我首选的一件事是FitNesse的wiki风格的文档功能.它为这些规范测试提供了代码和文档.
Spock中是否有一种方法(使用插件?/开箱即用?)生成任何类型的人类可读文档,以向项目经理/利益相关者展示?
来自JUnit背景我不太了解spockD测试中所有文本的要点,因为它们没有显示在测试的输出上.
因此,例如,如果我对具有约束foo max:5的字段Double foo有约束,则nullable:false
我写这样的测试:
void "test constraints" {
when: "foo set to > max"
foo=6D
then: "max validation fails"
!foo.validate()
when: "foo is null
foo=null
then: "null validation fails"
!foo.validate()
}
Run Code Online (Sandbox Code Playgroud)
该测试在其源代码中有详细记录,但如果验证失败,则错误输出不会利用我所做的所有额外输入以使我的测试清晰.
我得到的只是
Failure: |
test constraints(com.grapevine.FooSpec)
|
Condition not satisfied:
f.validate()
| |
| false
Run Code Online (Sandbox Code Playgroud)
但我无法告诉表单这个报告是否未通过空约束或最大约束验证,然后我需要检查测试源中失败的行号.
至少我可以做JUnit
foo=60D;
assertFalse("contraints failed to block foo>max", f.validate());
foo=null;
assertFalse("contraints failed to block foo=null", f.validate());
Run Code Online (Sandbox Code Playgroud)
然后我会从失败报告中获得有用的信息.这似乎更简洁,并提供更丰富的测试失败报告.
是否有某种方法可以从Spec获得更强大的错误报告,利用所有这些类型的when和then子句,以便它们出现在故障报告中,以便您知道实际上失败了什么?这些"何时"和"然后"文本描述符仅用作内部源文档还是在某处使用?