问题标签 [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.

0 投票
1 回答
690 浏览

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 表达式的任何视图文件执行任何集成测试。

0 投票
1 回答
63 浏览

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.*;

谁能建议我在这里想念的东西

0 投票
1 回答
3567 浏览

java - @ContextConfiguration 与“位置”或相同配置与“类”和 @ImportResource 之间的区别

我有一个 Java Spring MVC 应用程序,其中包含一个单元测试设置,如下所示:

单元测试以这种方式工作正常。但是,如果我将单元测试的注释更改为以下内容(同时使其余代码完全相同):

...然后测试甚至无法正常运行,给我下面发布的错误。有什么区别?我(显然是错误的)假设这两种设置只是应该具有相同结果的两种选择,但显然做了一些不同的事情,导致后者失败。

有人可以解释将@ContextConfiguration 与“位置”一起使用与将其与“类”一起使用以引用加载完全相同位置的配置类之间的区别吗?

发生的异常:

0 投票
2 回答
6800 浏览

java - 单元测试 Spring MissingServletRequestParameterException JSON 响应

我在 Spring Boot 休息控制器中有 POST 方法,如下所示

现在,如果我在Postman中使用缺少的参数进行测试,我会得到一个 400 http 响应和一个 JSON 正文:

直到现在还可以,但是当我尝试进行单元测试时,我没有得到 JSON 响应

测试失败并产生

我做了一个.andDo(print())并发现响应中没有正文

为什么我在对控制器进行单元测试时没有收到 JSON 响应,但在使用 Postman 或 cUrl 进行手动测试时却收到了它?

编辑:我添加了@WebIntegrationTest但得到了同样的错误:

0 投票
1 回答
513 浏览

spring - 测试 Spring Controller 方法时出现 Bean 验证问题

我有一个看起来像这样的 Spring RestController:

PS:用户旁边的@Valid :这就是我遇到问题的地方。

这是控制器的测试之一:

TestAppConfig 看起来像这样:

问题@Valid:除了工作正常(调用服务)之外的一切。这@Validjavax.validation.Valid我希望用于简单验证的注释(实现 = Hibernate Bean Validator)。但是,在我的测试期间,我没有看到验证发生。但是,当我调用服务调用时,它们确实会发生。我会错过什么?

0 投票
2 回答
1362 浏览

java - Spring MVC 测试:控制器方法参数

我正在尝试为我的 Spring MVC Web 应用程序编写测试。

我已经成功配置了一个MockMvc对象并且可以执行preform()操作,并且可以验证我的控制器方法正在被调用。

我遇到的问题与将UserDetails对象传递给我的控制器方法有关。

我的控制器方法签名如下:

在测试期间,user为空(这是NullPointerException由于我的代码造成的。

这是我的测试方法:

所以我的问题是如何正确地将UserDetails对象传递到我的MockMvc控制器中?那么其他与安全无关的对象(例如表单 dto)呢?

谢谢你的帮助。

0 投票
2 回答
14608 浏览

java - Spring 的 MockMvc 是用于单元测试还是集成测试?

Spring 有 2 个 MockMvc 设置:

  1. 独立设置
  2. WebApplicationContext 设置

一般来说,MockMvc 用于什么样的测试?单元还是集成?或两者?

我是否正确地说使用独立设置(在 Spring 的应用程序上下文之外运行)允许您编写单元测试,并且使用 WebApplicationContext 设置您可以编写集成测试?

0 投票
2 回答
12954 浏览

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 会运行得更快,那么好处会更容易看到相关的堆栈跟踪

0 投票
1 回答
629 浏览

java - 静态库的导入如何在 Java / Spring 中工作?

我正在试验 Spring 框架的 MockMvc。要调用 MockMvc 的执行方法,我需要导入如下

部分代码

我知道 get 方法是静态的,但这是我第一次看到 import 有 static 关键字。有人可以向我解释吗?为什么需要静态关键字?为什么只导入方法?我对此有点困惑。

0 投票
1 回答
74 浏览

java - 我如何测试会话中存在的特定数据?

我想测试该会话在不同的请求时间上是否具有正确的 TTL 值。我该怎么做?

我试着这样做

它抛出异常java.lang.AssertionError: No ModelAndView found。事实上,我没有 ModelAndView。是否可以测试会话属性?