我正在使用Spring的“Spring test mvc”库来测试web控制器。我有一个非常简单的控制器,它返回一个JSON数组。那么在我的测试中我有:
@Test
public void shouldGetAllUsersAsJson() throws Exception {
mockMvc.perform(get("/v1/users").accept(MediaType.APPLICATION_JSON))
.andExpect(content().mimeType(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("fName").exists());
}
上述测试返回:
java.lang.AssertionError: No value for JSON path: fName
为了快速检查我实际得到了什么,我运行了以下测试:
@Test
public void shouldPrintResults() throws Exception {
mockMvc.perform(get("/v1/users").accept(MediaType.APPLICATION_JSON))
.andDo(print());
}
并在MockHttpServletResponse
我不确定为什么jsonPath
无法在JSON数组中看到fName
。
您的json响应体是什么样子的?您可以通过执行. andDo(print())
来查看它。
您可能想试试jsonPath($fName”)
。
这是假设您的json响应是:{"fName":"first name"}
如果您的响应是一个数组,那么您需要jsonPath($[0].fName”)
来获得类似以下响应:[{“fName”:“first name”},{“fName”:“first name#2”}]
您可以在以下网站上看到更多示例:http://goessner.net/articles/JsonPath/
如果您将json路径依赖项添加到maven,或者将jar添加到您的lib中,那么它就会工作。我认为Spring在最新的Spring 3.2.0 RC1版本中没有包括jsonPath依赖项。我猜这对于Spring-Test-MVC独立项目也是一样的。
以下是Maven的依赖关系:
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>0.8.1</version>
<scope>test</scope>
</dependency>
您可能还需要hamcrest库来使用jsonPath("$. test"). value("test")
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
我有一个依赖Spring批处理JobLauncher的类。 我想使用这个JobLauncher的异步版本,所以我创建了一个配置: 我不得不使用,否则当应用程序运行时,其他一些同步JobLauncher会被选中。 现在,在我的测试中,我想使用同步版本来验证作业执行的结果。因此,我在配置中定义了同步bean: 然而,当我的测试运行时。。它总是使用异步版本,我的结果不正确。 是否有一种方法可以在我的测试
我正在使用Spring Boot应用程序,自动配置已启用。主应用程序文件标记为。数据源是lookedup,JNDI使用java配置进行配置,创建数据源的类被标记为。 我有一个测试类如下。 问题是当我运行测试用例时,会发生数据源jndi查找,这会失败,因为测试用例没有在服务器环境中运行。据我所知,类路径中标记为的类被执行,并且调用数据源查找的原因。 目前我发现的解决方法是使用创建数据源,而不是JND
问题内容: 我的公司一直在评估Spring MVC,以确定我们是否应该在下一个项目中使用它。到目前为止,我喜欢我所看到的内容,现在,我正在查看Spring Security模块,以确定是否可以/应该使用它。 我们的安全要求非常基本。用户只需要能够提供用户名和密码即可访问网站的某些部分(例如获取有关其帐户的信息);并且网站上的页面很少(常见问题解答,支持等),应该为匿名用户提供访问权限。 在我创建的
我正在用Hibernate为我们的Spring Boot REST API创建单元测试。我只是想知道当我使用@transactional时是否有问题。如果我用@Transactional注释测试,数据将永远不会真正进入数据库,并且会绕过潜在的错误源,我是否认为这是正确的?因为某些错误只发生在提交期间?还是我看错了? 在@test之后回滚事务-以下问题与我的问题不完全一致。因为我想知道如何触发提交并
相关pom.xml 我的测试类: 我只是在试着测试数据库。 类级别上的@SQL注释不能像我的情况那样与Testcontainers初始化一起工作吗? 这里需要什么使我的两个初始脚本都运行? 我尝试使用.WithInitScript,它运行了。但是,我有很多数据要初始化,而且文件太大(而且会增长),所以我将DDL(模式)和Inserts(数据)分开。现在,我的问题是如何使用“WithInitScri
简介 在之前的章节我们实现了一个简单但是功能齐全的web项目、学习了如何使用Gradle来构建和运行这个项目。测试代码是软件开发周期中非常重要的一环,能够确保软件的行为能符合预期。这一章我将讲述如何使用Gradle来组织、配置和执行测试代码,学习如何写单元测试、集成测试和功能测试并把他们集成到项目构建中。 Gradle集成了很多Java和Groovy测试框架,在本章的最后你会用JUnit、Test