问题标签 [spring-test-mvc]
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.
spring-security - Spring security DefaultMethodSecurityExpressionHandler bean 未注册 Integration Test 的默认 spring security 配置
我正在尝试使用 Spring Security 和 Thymeleaf 为视图层编写 Spring MVC 集成测试。
就像文档中的所有示例一样,我已经使用 Spring Security Integration 设置了我的 MockMvc 对象。
集成测试设置:
Thymeleaf 配置为使用 SpringSecurityDialect。(thymeleaf-extras-springsecurity4)
为了能够在视图层中使用 spring 安全表达式(示例)。
现在我的配置在测试之外工作得非常好,但是,当我尝试进行集成测试时,Thymeleaf 抛出一个异常,指出
(org.thymeleaf.extras.springsecurity4.auth.AuthUtils.class)
此异常是有效的,因为在集成测试期间应用程序上下文中缺少 SecurityExpressionHandler.class。
所以我的问题是......为什么 SecurityExpressionHandler.class 在常规 servlet 环境中注册为 spring bean,但是在使用集成测试配置时,上下文中缺少 ctx.getBeansOfType(SecurityExpressionHandler.class)?这是 Spring Security 中的错误吗?或者我是否需要添加额外的逻辑来为集成测试注册一个 SecurityExpressionHandler bean?
我尝试通过扩展 GlobalMethodSecurityConfiguration 和 @Overriding createExpressionHandler() 并将其添加到我的测试配置来“强制创建”一个 SecurityExpressionHandler,但该 bean 仍然没有在 WebApplicationContext 中注册。
这对我来说现在是一个障碍,因为我无法对包含嵌入其中的 Spring Security 表达式的任何视图文件执行任何集成测试。
spring-test-mvc - spring-test-mvc 中的静态导入编译时错误
我正在编写一个测试用例来测试 Spring MVC 控制器。我在 pom.xml 中定义了以下条目:
但 Eclipse IDE 无法理解以下静态导入: import static org.springframework.test.web.server.request.MockMvcRequestBuilders.get; 导入静态 org.springframework.test.web.server.result.MockMvcResultMatchers.*;
谁能建议我在这里想念的东西
java - @ContextConfiguration 与“位置”或相同配置与“类”和 @ImportResource 之间的区别
我有一个 Java Spring MVC 应用程序,其中包含一个单元测试设置,如下所示:
单元测试以这种方式工作正常。但是,如果我将单元测试的注释更改为以下内容(同时使其余代码完全相同):
...然后测试甚至无法正常运行,给我下面发布的错误。有什么区别?我(显然是错误的)假设这两种设置只是应该具有相同结果的两种选择,但显然做了一些不同的事情,导致后者失败。
有人可以解释将@ContextConfiguration 与“位置”一起使用与将其与“类”一起使用以引用加载完全相同位置的配置类之间的区别吗?
发生的异常:
java - 单元测试 Spring MissingServletRequestParameterException JSON 响应
我在 Spring Boot 休息控制器中有 POST 方法,如下所示
现在,如果我在Postman中使用缺少的参数进行测试,我会得到一个 400 http 响应和一个 JSON 正文:
直到现在还可以,但是当我尝试进行单元测试时,我没有得到 JSON 响应
测试失败并产生
我做了一个.andDo(print())并发现响应中没有正文
为什么我在对控制器进行单元测试时没有收到 JSON 响应,但在使用 Postman 或 cUrl 进行手动测试时却收到了它?
编辑:我添加了@WebIntegrationTest但得到了同样的错误:
spring - 测试 Spring Controller 方法时出现 Bean 验证问题
我有一个看起来像这样的 Spring RestController:
PS:用户旁边的@Valid :这就是我遇到问题的地方。
这是控制器的测试之一:
TestAppConfig 看起来像这样:
问题@Valid
:除了工作正常(调用服务)之外的一切。这@Valid
是javax.validation.Valid
我希望用于简单验证的注释(实现 = Hibernate Bean Validator)。但是,在我的测试期间,我没有看到验证发生。但是,当我调用服务调用时,它们确实会发生。我会错过什么?
java - Spring MVC 测试:控制器方法参数
我正在尝试为我的 Spring MVC Web 应用程序编写测试。
我已经成功配置了一个MockMvc
对象并且可以执行preform()
操作,并且可以验证我的控制器方法正在被调用。
我遇到的问题与将UserDetails
对象传递给我的控制器方法有关。
我的控制器方法签名如下:
在测试期间,user
为空(这是NullPointerException
由于我的代码造成的。
这是我的测试方法:
所以我的问题是如何正确地将UserDetails
对象传递到我的MockMvc
控制器中?那么其他与安全无关的对象(例如表单 dto)呢?
谢谢你的帮助。
java - Spring 的 MockMvc 是用于单元测试还是集成测试?
Spring 有 2 个 MockMvc 设置:
- 独立设置
- WebApplicationContext 设置
一般来说,MockMvc 用于什么样的测试?单元还是集成?或两者?
我是否正确地说使用独立设置(在 Spring 的应用程序上下文之外运行)允许您编写单元测试,并且使用 WebApplicationContext 设置您可以编写集成测试?
spring - 在 Spring 中进行集成测试时如何模拟 Eureka?
我正在 Spring Boot 中运行一个简单的 Junit 测试控制器。测试代码如下所示:
在 application-integrationTest.properties 我有以下 Eureka 设置:
当一个junit测试开始时,我看到以下内容:
2015-09-16 16:46:03,905 ERROR localhost-startStop-1 com.netflix.discovery.DiscoveryClient Can't get a response from http://localhost:8767/eureka/apps/
Can't contact any eureka nodes - possibly a security group issue?
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:184) ~[jersey-apache-client4-1.11.jar:1.11]
测试通过,这不是问题,但我看到很多与 Eureka 相关的异常堆栈跟踪。问题是是否有一种方法可以模拟 eureka 或另一种方法在进行测试时跳过它?
如果测试失败并且 tst 会运行得更快,那么好处会更容易看到相关的堆栈跟踪
java - 静态库的导入如何在 Java / Spring 中工作?
我正在试验 Spring 框架的 MockMvc。要调用 MockMvc 的执行方法,我需要导入如下
部分代码
我知道 get 方法是静态的,但这是我第一次看到 import 有 static 关键字。有人可以向我解释吗?为什么需要静态关键字?为什么只导入方法?我对此有点困惑。
java - 我如何测试会话中存在的特定数据?
我想测试该会话在不同的请求时间上是否具有正确的 TTL 值。我该怎么做?
我试着这样做
它抛出异常java.lang.AssertionError: No ModelAndView found
。事实上,我没有 ModelAndView。是否可以测试会话属性?