SpringBoot 2.x (4):配置文件与单元测试
2019-05-08 07:28:24来源:博客园 阅读 ()
SpringBoot的配置文件有默认的application.properties
还可以使用YAML
区别:
application.properties示例:
server.port=8090
server.session-timeout=30
server.tomcat.max-threads=0
server.tomcat.uri-encoding=UTF-8
application.yml示例:
server:
port: 8090
session-timeout: 30
tomcat.max-threads: 0
tomcat.uri-encoding: UTF-8
两种方式都优于SSM的XML配置形式,个人更偏向于使用properties文件
SpringBoot默认的配置项:
这里不多写了,可以去Spring官网查找
也可以参考一位大佬的博客:
https://www.cnblogs.com/SimpleWu/p/10025314.html
如何在代码中读取配置文件中的自定义信息呢?
比如:
file.path=D:\\temp\\images\\
想要在代码中获取这个值的话:
@Value("${file.path}") private String FILE_PATH;
将配置文件映射到实体类:
第一种方式:手动给实体类属性注入
配置文件:
test.name=springboot
test.domain=www.dreamtech.org
实体类:
package org.dreamtech.springboot.domain; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class ServerSettings { @Value("${test.name}") private String name; @Value("${test.domain}") private String domain; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDomain() { return domain; } public void setDomain(String domain) { this.domain = domain; } }
Controller:
@Autowired private ServerSettings serverSettings; @RequestMapping("/test") @ResponseBody private ServerSettings test() { return serverSettings; }
第二种方式:根据前缀自动注入
实体类:
package org.dreamtech.springboot.domain; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "test") public class ServerSettings { private String name; private String domain; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDomain() { return domain; } public void setDomain(String domain) { this.domain = domain; } }
注意:如果使用了前缀的方式,那么不能再使用@Value注解了!
下面进行SpringBoot测试学习:
普通的单元测试:
首先导入依赖:通常SpringBoot新项目带有这个依赖,如果没有,自行导入即可
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
在test目录下新建测试类:
@Test用于测试;@Before测试前运行;@After测试后运行
package org.dreamtech.springboot; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import junit.framework.TestCase; @RunWith(SpringRunner.class) @SpringBootTest(classes = { SpringbootApplication.class }) public class SpringBootTestDemo { @Test public void testOne() { System.out.println("hello world!"); TestCase.assertEquals(1, 1); } @Before public void testBefore() { System.out.println("Before"); } @After public void testAfter() { System.out.println("After"); } }
对API接口进行测试:使用MockMVC
MockMVC相当于就是一个HTTP客户端,模拟用户使用浏览器进行操作
写一个接口进行测试:
@RequestMapping("/test") @ResponseBody private String test() { return "test"; }
测试类:
package org.dreamtech.springboot; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import junit.framework.TestCase; @RunWith(SpringRunner.class) @SpringBootTest(classes = { SpringbootApplication.class }) @AutoConfigureMockMvc public class MockMvcTest { @Autowired private MockMvc mockMvc; @Test public void apiTest() throws Exception { // 以GET方式访问/test路径,如果返回是200状态码说明调用成功 MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/test")) .andExpect(MockMvcResultMatchers.status().isOk()).andReturn(); TestCase.assertEquals(mvcResult.getResponse().getStatus(), 200); } }
最后记录一点有趣的东西:
启动的时候显示SpringBoot多单调啊,不如找一些好看的!
在classpath下面写一个banner.txt:
//////////////////////////////////////////////////////////////////// // _ooOoo_ // // o8888888o // // 88" . "88 // // (| ^_^ |) // // O\ = /O // // ____/`---'\____ // // .' \\| |// `. // // / \\||| : |||// \ // // / _||||| -:- |||||- \ // // | | \\\ - /// | | // // | \_| ''\---/'' | | // // \ .-\__ `-` ___/-. / // // ___`. .' /--.--\ `. . ___ // // ."" '< `.___\_<|>_/___.' >'"". // // | | : `- \`.;`\ _ /`;.`/ - ` : | | // // \ \ `-. \_ __\ /__ _/ .-` / / // // ========`-.____`-.___\_____/___.-`____.-'======== // // `=---=' // // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // // 佛祖保佑 永不宕机 永无BUG // //////////////////////////////////////////////////////////////////// Spring Boot Version: ${spring-boot.version}
原文链接:https://www.cnblogs.com/xuyiqing/p/10808092.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:客户端负载均衡 - Ribbon
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
- nacos~配置中心功能~springboot的支持 2020-06-10
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash