我正在与:
- 斯波克核心
- 斯波克报告
- 斯波克弹簧
- Spring MVC 测试
我有以下代码:
@FailsWith(java.lang.AssertionError.class)
def "findAll() Not Expected"(){
given:
url = PersonaUrlHelper.FINDALL;
when:
resultActions = mockMvc.perform(get(url)).andDo(print())
then:
resultActions.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_XML))
}
此处代码失败(预期如何),因为正在测试的方法确实返回 (MediaType.APPLICATION_JSON)
而不是(MediaType.APPLICATION_XML)
.
所以说的原因@FailsWith(java.lang.AssertionError.class)
。
即使我使用@FailsWith(value=java.lang.AssertionError.class, reason="JSON returned ...")
我也无法reason
通过Spock Reports看到
问题一:我怎样才能看到reason
Spock Reports?。
我知道 Spock 提供了throw()方法,因此我能够做到:
then:
def e = thrown(IllegalArgumentException)
e.message == "Some expected error message"
println e.message
遗憾地抛出不适用于 AssertionError。
如果我使用thrown(AssertionError)
的测试方法不通过,唯一的方法是通过,@FailsWith
但我无法从 AssertionError获取错误消息
问题二如何从 AssertionError中获取错误消息?
我知道我能够做类似的事情
then: "Something to show on Spock Reports"
但只是好奇是否可以解决问题二..