Why are Spock Speck tests so wordy? <p>Coming from JUnit background I don't really understand the point of all the text in spockD tests, since they don't show on the output from the test.</p> <p>So for example, if I have a constraint on a field Double foo with constraints foo max:5, nullable:false</p> <p>And I write tests like this:</p> <pre><code>void "test constraints" { when: "foo set to &gt; max" foo=6D then: "max validation fails" !foo.validate() when: "foo is null foo=null then: "null validation fails" !foo.validate() } </code></pre> <p>The test is well documented in its source, but if the validation fails, the error output doesn't take advantage of all this extra typing I've done to make my tests clear.</p> <p>All I get is</p> <pre><code>Failure: | test constraints(com.grapevine.FooSpec) | Condition not satisfied: f.validate() | | | false </code></pre> <p>But I can't tell form this report whether it failed the null constraint or the max constraint validation and I then need to check the line number of the failure in the test source. </p> <p>At least with JUnit I could do</p> <pre><code>foo=60D; assertFalse("contraints failed to block foo&gt;max", f.validate()); foo=null; assertFalse("contraints failed to block foo=null", f.validate()); </code></pre> <p>And then I'd get useful info back from in the failure report. Which seems to both more concise and gives a more informative test failure report. </p> <p>Is there some way get more robust error reporting out of Spec that take advantage of all this typing of when and then clauses so they show up on failure reports so you know what actually fails? Are these "when" and "then" text descriptors only serving as internal source documentation or are they used somewhere?</p>