我们正在使用我们的GraphQL后端WebTestClient(SpringBoot)进行测试,但很难确定测试失败的原因。我们的代码如下所示:
webTestClient
.post().uri(GQLKonstanten.URL)
.body(GQLRequestInserter.from(movieDeleteGQL, variables))
.exchange()
.expectBody()
.jsonPath("$.errors").doesNotExist()
.jsonPath("$.data.movie.id")
.isEqualTo(movie.getId());
我得到的是带有以下消息的stacktrace:
Java语言lang.AssertionError:JSON路径“$.data.movie.id”处没有值
...
原因:com.jayway.jsonpath.PathNotFoundException:路径$['data']['电影']中缺少属性
错误消息完全正确。但为了实际查看这个graphQl执行命令实际返回的内容,我总是将WebClient执行更改为:
String responseBody = webTestClient
.post().uri(GQLKonstanten.URL)
.body(GQLRequestInserter.from(deleteMovieGQL, variables))
.exchange()
.expectStatus()
.isOk()
.expectBody(String.class)
.returnResult().getResponseBody();
System.out.print(responseBody);
那么我看到的结果是
{"data":{"deleteMovie":{"id":7}}}
我看到我期望的是“movie”而不是“deleteMoine”属性。所以我把测试改为
.jsonPath("$.data.deleteMovie.id")
总是运行两次测试并更改代码很麻烦。
有没有更好的方法让WebTestClient在测试失败时始终输出responseBody?
安装程序:我有一个扩展IRetryAnalyzer的类,并实现了一个简单的重试逻辑,覆盖了以下方法:public boolean retry(ITestResult result){ 提前道谢。
我正在尝试使用Web客户端创建REST调用 我只想记录通话结果。成功时 - 使用响应正文记录成功消息,在 5XX 或超时或其他时 - 记录错误消息。日志应该在后台创建(而不是由创建调用的线程创建)但是每次都会执行,工作正常,但也有 记录在日志文件中。 我也在一些教程中看到过方法,但在我的设置中有这样的方法。 如何记录成功和失败消息?
我写了500多个单元测试方法。当我发出< code>ng test命令时。它开始测试所有的500种方法。 如果任何测试用例失败,它不会停止,仍然会继续执行所有方法。所以我需要等待更多的时间来再次重新运行单元测试。 我知道我们可以通过执行来存在,然后使用命令再次重新运行单元测试。这种方式也需要太多时间。 那么,如果任何一个测试失败,是否有可能停止(不存在)单元测试?
问题内容: 无论彼此是否成功,我都应该执行几个测试,并且如果这些测试中至少有一个失败,我希望詹金斯/哈德森显示 红灯 。我当前的配置(为简化起见)如下: ci.sh : build.xml : 我怎样才能使所有测试都执行,但是如果三个测试中至少有一个失败,则ant / Jenkins应该会失败? 问题答案: 我发现线程计数设置为“ 1”的任务是可行的解决方法。这不是完美的,但是更改很小: buil
问题内容: 我有基于gradle的带有junit测试的Java项目,我正在为其构建CI工作。我使用松弛Slack Notification插件成功地将松弛与Jenkins集成在一起。 Jenkins版本:2.173 松弛通知版本:2.20 jenkins CI是脚本化管道,具有以下代码: SlackNotifier是一个包含以下代码的库: buildUnitTestSlackNotificatio