我有一个简单的健康控制器定义如下:
@RestController
@RequestMapping("/admin")
public class AdminController {
@Value("${spring.application.name}")
String serviceName;
@GetMapping("/health")
String getHealth() {
return serviceName + " up and running";
}
}
以及测试它的测试类:
@WebMvcTest(RedisController.class)
class AdminControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void healthShouldReturnDefaultMessage() throws Exception {
this.mockMvc.perform(get("/admin/health"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(content().string(containsString("live-data-service up and running")));
}
}
运行测试时,我得到以下错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field configuration in com.XXXX.LiveDataServiceApplication required a bean of type 'com.XXXXX.AppConfiguration' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.XXXX.AppConfiguration' in your configuration.
下面是AppConfiguration。java与主spring boot app类在同一个包中定义:
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class AppConfiguration {
@Value("${redis.host}")
private String redisHost;
@Value("${redis.port}")
private int redisPort;
@Value("${redis.password:}")
private String redisPassword;
...
// getters and setters come here
主要类别:
@SpringBootApplication
public class LiveDataServiceApplication {
@Autowired
private AppConfiguration configuration;
public static void main(String[] args) {
SpringApplication.run(LiveDataServiceApplication.class, args);
}
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration redisConfiguration = new RedisStandaloneConfiguration(configuration.getRedisHost(), configuration.getRedisPort());
redisConfiguration.setPassword(configuration.getRedisPassword());
return new LettuceConnectionFactory(redisConfiguration);
}
}
如果我将测试类中的注释修改如下,测试通过:
@SpringBootTest
@AutoConfigureMockMvc
class AdminControllerTest {
....
我错过了什么?
在src/test/resource/application中定义所有属性。将junit 5用于rest层的文件示例:
@ExtendWith(MockitoExtension.class)
public class RestTest {
@InjectMocks
private RestClass restClass;
private MockMvc mockMvc;
@BeforeEach
public void init() throws Exception {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(restClass).build();
}
@Test
public void test() throws Exception {
String url = "/url";
ResultActions resultActions = mockMvc.perform(get(url));
resultActions.andExpect(status().isOk());
}
}
您应该了解WebMvcTest和SpringBootTest的用法
@WebMvcTest:注释只是实例化web层,而不是整个上下文,所以应该模拟控制器类中的所有依赖项,您可以查看文档
Spring Boot仅实例化Web层而不是整个上下文。在具有多个控制器的应用程序中,您甚至可以使用@WebMvcTest(HomeController.class)来请求仅实例化一个。
我们使用@MockBean为GreetingService创建和注入一个mock(如果不这样做,应用程序上下文将无法启动)
SpringBootTest:SpringBootTest注释实际加载测试环境的应用程序上下文
@SpringBootTest注释告诉Spring Boot查找主配置类(例如带有@SpringBootApplication的配置类),并使用它来启动Spring应用程序上下文。
已与目标VM断开连接,地址:“javadeBug”,传输:“共享内存” 进程已完成,退出代码为0 PessoAcontroller:
使用 springboot 改造 jeesite,只保留最简单的系统配置 。 介绍 1、运行主类,登录 admin/admin com.wolfking.jeesite.WolfkingJeesiteDriver 2、砍掉了所有的冗余的东西,只保留系统配置,数据库脚本 wolfking-jeesite.sql 3、使用 springboot 集成,使用 HikariDataSource 数据源
WeChat-SpringBoot 是使用 Spring Boot 开发的微信开发后端脚手架
生产制造执行系统,基于 springBoot 开发。 精益生产+ISA-95 标准。 结合 MESA 战略计划方向设计框架。
一个简单便捷的基于springboot+RabbitMQ中间件实现的RPC调用框架 远程调用过程如下 首先:消费者和生产者spring容器初始化的时候,会根据配置的的api在RabbitMQ上建立相应的队列,消费者会监听相关队列 1)生产者(client)调用以本地调用方式调用服务; 2)client 接收到调用后通过Hessian将方法、参数等组装成能够进行网络传输的消息体; 3)client
SpringBoot + 前端MVVM 基于Java的微服务全栈快速开发实践。 如今Web开发领域,当有人提到Java时,总会让人觉得臃肿、古老而过时且开发效率没有某些动态语言高效,甚至在此之前还有人高喊“Java 已死!”,但是事实真是如此吗?其实如果你一直关注着Java,那你的感悟会更深,尽管它有很多的缺点和啰嗦,但不可否认,Java依然是工业界中最优秀的语言,而且它一直保持着与时俱进。本项目
SpringBoot-Plus 是一个基于SpringBoot 2 的管理后台系统,包含了用户管理,组织机构管理,角色管理,功能点管理,菜单管理,权限分配,数据权限分配,代码生成,子系统生成,文档管理和预览等功能.不同于其他简单的开源后台管理系统,SpringBoot-Plus具备适当的企业应用深度。 系统基于Spring Boot 2技术,前端采用了Layui 2。数据库以MySQL/Oracl
�� a simple project for Spring Boot ~ 项目概述 ( �� pause update) �� 一个简单的,基于Spring Boot的好友备忘录小项目,通过本项目可以学习Spring Boot与MyBatis的整合及CURD操作的基本思路,同时也可以帮助你学习Thylemeaf模板引擎使用哟 ! 该项目的代码注释详细,逻辑结构清晰,非常具有参考,学习价值哟 !