问题标签 [spring-mvc-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3385 浏览

spring - Spring MVC 测试(安全集成测试),JSESSIONID 不存在

我为我的 Spring Boot 应用程序创建了自定义登录表单。在我的表单集成测试中,我想检查收到的 cookie 是否包含JSESSIONIDXSRF-TOKEN

但是,我只收到XSRF-TOKEN

这是我的测试:

安全配置:

请帮助我获得所需的结果。

0 投票
0 回答
75 浏览

json - 基于 Maven Profiles 的 Junit 集成测试

使用 Spring mvc test 和 mockMvc 测试 Spring rest 控制器及其 JSON 形式的输出及其 JSON 结构和 JSON 值。

我有两个问题:)

  1. 我们在我们的应用程序中配置了多个配置文件,例如 dev、qa 和 prod,每个环境都返回不同的输出。就像 userId 1 将根据配置文件返回不同的输出。那么我们如何对不同的配置文件进行集成测试。
  2. 在集成测试中,我还必须测试 JSON 的结构作为输出。它可以根据相同端点的输入而有所不同。我们如何才能继续下去。

如果有人有一些想法。请分享。:)

0 投票
0 回答
1251 浏览

inputstream - 使用 spring-mvc-test andDo() 方法时没有指定 InputStream

最近,当我使用 spring-mvc-test-framework 工作时,代码如下:

然后我得到了这个错误。

我搜索并没有找到答案。谁能告诉我为什么会这样?

现在我得到了另一个解决方案。

实际上我在其官方参考http://docs.spring.io/spring-restdocs/docs/1.0.0.RELEASE/reference/html5/#getting-started-build-configuration-maven-packaging和像这样使用 setUp() 方法:

目的是记录 api 。现在另一个解决方案是我使用 apply() 方法然后问题解决了。

首先,我改为:

然后解决了这样的版本问题: spring-restdocs is not recognize apply()

我所有的代码如下:

如果有人遇到此类问题,希望这可以给您一些帮助。

0 投票
2 回答
2134 浏览

java - 在spring test mvc中设置请求部分

我正在尝试(通过 Spring 测试(mvc))测试一个使用servletRequest.getParts()

到目前为止,我所读到的MockMvcRequestBuilders.fileUpload().file()就是解决方案。但是我不能让它工作。我写了以下失败的测试

我浏览了spring代码,并调用了在何时从另一个列表中获取其元素时file(...)添加一个元素List<MockMultipartFile>getParts()(Map<String, Part> parts)

必须有另一种方法来做到这一点......

编辑 1

我用来测试控制器的代码是:

0 投票
1 回答
5333 浏览

spring - JPA 外键在子表中为空

我有以下课程,我正在尝试使用 JPA 获得 onetomany 关系。当xml消息发送到restcontroller时,消息存储在父表和子表中,但外键始终为空。如果有任何问题,请告诉我。

我用来保存数据的休息服务,下面是我发布到这个休息方法的示例 xml。

儿童班

和我的家长班

和我的 xml

以下是我在团队中创建条目后在表格中看到的结果。请注意 player 表中的 team_id 字段为空。这是我的问题。需要知道如何修复它,以便该字段获得 team_id 值。

0 投票
1 回答
1002 浏览

spring-mvc - MockHttpServletRequest Swagger2 DeferredResult  响应中的奇怪字符

运行验证测试并将这些讨厌的字符嵌入到 Swagger 2.0 验证输出中 {"$ref":"#/definitions/DeferredResult«ResponseEntity«SummCollection»»"

控制器方法返回:DeferredResult<ResponseEntity<SummCollection>>

我只是在写问题时注意到:实际:“<”疯狂:“«”

MockHttpServletRequest Swagger2 DeferredResult  响应中的奇怪字符

这似乎是“iso-8859-1”与“utf-8”之间的问题,对吧?身份证。

问题是什么导致 SwaggerTest validateImplementationAgainstDesignSpec 读取文件 .yaml json 就好了,但是 MockMvc 执行 GET 响应是在类名和分隔符之间包含这些“”字符。

代码调用:

MvcResult mvcResult = this.mockMvc.perform(get("/v2/api-docs?group=full-api") // 2 .accept(MediaType.APPLICATION_JSON) .characterEncoding("application/json;charset=ISO-8859-1")) .andDo(MockMvcResultHandlers.print()) .andExpect(status().isOk()) .andReturn();

我已经将代码.characterEncoding("application/json;charset=ISO-8859-1"))设置为“UTF-8”以及其他所有极端情况(包括“windows-1252”)。这发生在 Linux CI 服务器上,所以它不是一个绕口令。

我已经读过它是一个StringHttpMessageConverter问题/症状,但无济于事如何解决使用 MockMVC 调用 Swagger2 的问题。

输出:
MockHttpServletResponse: Status = 200 Error message = null Headers = {Content-Type=[application/json]} Content type = application/json Body = {"swagger":"2.0","info":{"description":"Some Description ","version":"1.0","title":"Sum-Server","license":{}},"host":"localhost","basePath":"/","tags":[{"name":"summ-service","description":"Summary Service"}],"paths":{"/api/v1/summ/{id}":{"get":{"tags":["device-summary-service"],"summary":"getDeviceSummaries","operationId":"getDeviceSummariesUsingGET","consumes":["application/json"],"produces":["application/json"],"parameters":[{"name":"id","in":"path","description":"id","required":true,"type":"string"},{"name":"days","in":"query","description":"days","required":false,"type":"string"},{"name":"start","in":"query","description":"start","required":false,"type":"string"},{"name":"end","in":"query","description":"end","required":false,"type":"string"}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/DeferredResult«ResponseEntity«SummCollection»»"}}}}}},"definitions":{"SummCollection":{"type":"object","properties":{"SummList":{"type":"array","items":{"$ref":"#/definitions/SummDateRange"}},"endDate":{"type":"string"},"prioritizedReportFamily":{"type":"integer","format":"int32"},"startDate":{"type":"string"}}},"DeferredResult«ResponseEntity«SummCollection»»":{"type":"object","properties":{"result":{"type":"object"},"setOrExpired":{"type":"boolean"}}}}}

0 投票
1 回答
1845 浏览

spring-mvc - 如何使用 Spring MVC 和 Spock 使用 PUT 请求进行单元测试多部分?

我有一个像这样的控制器:

我想使用 Spring MVC Test 和 Spock 对其进行测试,但我只是不知道如何构建MockMultipartHttpServletRequestBuilder将 HttpMethod 从 POST 更改为 PUT 请求。

这是 Spock 规范:

我得到的错误是这样的:

我该怎么做才能让它发挥作用?

0 投票
1 回答
1142 浏览

spring - @Autowired 依赖项的 @Mock 导致随机 junit 测试失败

我的 spring-mvc 应用程序有效。耶!证明:

在此处输入图像描述

这是我的好设置:

我的重要部分Buggy-servlet.xml

bug-core.xml它导入的文件的重要部分:

VersionInfo班级:

最后,VersionInfoController班级:

都很好!

现在的问题:

我想进行单元测试。我觉得我做得很好。我的VersionInfoControllerTest班级:

WebAppContext班级:

TestContext班级:

我运行 junit(通过mvn clean install或在 Eclipse junit 启动配置中)。都很好。

如果我取消注释 中指示的两行VersionInfoControllerTest,则测试可能会失败或通过(通常会失败)。当它失败时,它会以两种方式之一失败:

方式一:

方式二更糟糕:

由于它是 StackOverflowError,因此重复直到内存不足。

我已经建立了一个github 项目来演示这个问题

有任何想法吗?我做错什么了?据我所知,我在 SO 和博客、论坛、spring 文档上做了什么其他公认的答案,都说要模拟一个 @Autowired 字段。

0 投票
1 回答
2632 浏览

spring-boot - SpringBoot junit 使用多个 TomcatServletContainerInitializer 测试 - BindException:地址已在使用中”

我有 spring boot 应用程序,如果 ai 单独运行它们,即手动运行,目前我所有的测试都运行绿色,但是当我运行 maven package 命令时,所有测试都以串行模式运行,即一个接一个。然后发生的是我得到:

基本上因为测试是串行运行的,所以它们都试图声明套接字 127.0.0.1:8081。并且由于套接字处于 TIME_WAIT 状态,第二个测试无法声明该套接字。即 netstat -apn 的输出

netstat -apn |grep -i 8080

  • 现在我配置了两个不同的配置文件,即开发和生产,如下所示:

    @Configuration @Profile("Development") 公共类 TomcatEmbededDevelopmentTesting1Profile 扩展 SpringServletContainerInitializer { ... }

    @Configuration @Profile("Production") 公共类 TomcatEmbededProductionProfile 扩展 SpringServletContainerInitializer { .. }

我现在所关注的是一项功能,用于指定我可以运行哪个客户 TomcatServletContainerInitializer,即我将有 5 个不同的一个,它们都在不同的端口/套接字上侦听。问题是,如果我有 5 个不同的 TomcatEmbeded 配置类,它们都标有“@Profile(“Development”)”,那么我如何告诉 junit 执行我需要的配置类。我已经厌倦了使用 @SpringApplicationConfiguration ,但这并没有成功。

然后我在网上找到了一篇文章,解释说有一些魔术注释 @IntegrationTest("server.port:0") 假设随机化该端口,但这对我也不起作用。春天的正确做法是什么?非常感谢任何提示。

这是我的测试示例:

0 投票
0 回答
96 浏览

spring - 在 mvc-test 框架中使用 sping 的默认 bean

我有以下控制器定义:

authentication对象自动注入,一切正常。但是一旦我想使用spring的mvc测试框架进行测试,我会得到:

测试是:

我该如何解决?