有许多网友会时不时的问我,spring boot项目如何测试,软件开发,如何陈设,在出产中有什么好的陈设方案吗?这篇文章就来先容一下spring boot 如何开拓、调试、打包到最后的投产上线。
开拓阶段
单位测试
在开拓阶段的时候最重要的是单位测试了,springboot对单位测试的支持已经很完善了。
1、在pom包中添加spring-boot-starter-test包引用
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
2、开拓测试类
以最简朴的helloworld为例,在测试类的类头部需要添加:@RunWith(SpringRunner.class)和@SpringBootTest注解,在测试要领的顶端添加@Test即可,最后在要领上点击右键run就可以运行。
@RunWith(SpringRunner.class) @SpringBootTest public class ApplicationTests { @Test public void hello() { System.out.println("hello world"); } }
实际利用中,可以凭据项目标正常利用去注入dao层代码可能是service层代码举办测试验证,spring-boot-starter-test提供许多基本用法,更可贵的是增加了对Controller层测试的支持。
//简朴验证功效集是否正确 Assert.assertEquals(3, userMapper.getAll().size()); //验证功效集,提示 Assert.assertTrue("错误,正确的返回值为200", status == 200); Assert.assertFalse("错误,正确的返回值为200", status != 200);
引入了MockMvc支持了对Controller层的测试,简朴示譬喻下:
public class HelloControlerTests { private MockMvc mvc; //初始化执行 @Before public void setUp() throws Exception { mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build(); } //验证controller是否正常响应并打印返回功效 @Test public void getHello() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn(); } //验证controller是否正常响应并判定返回功效是否正确 @Test public void testHello() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().string(equalTo("Hello World"))); } }
单位测试是验证你代码第一道屏障,要养成每写一部门代码就举办单位测试的习惯,不要比及全部集成后再举办测试,集成后因为更存眷整体运行结果,很容易遗遗漏代码底层的bug.
集成测试
整体开拓完成之后进入集成测试,spring boot项目标启动进口在 Application类中,直接运行run要领就可以启动项目,可是在调试的进程中我们必定需要不绝的去调试代码,假如每修改一次代码就需要手动重启一次处事就很贫苦,软件开发,spring boot很是贴心的给出了热陈设的支持,很利便在web项目中调试利用。
pom需要添加以下的设置:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build>
添加以上设置后,项目就支持了热陈设,很是利便集成测试。
投产上线
其实我以为这个阶段,应该照旧较量简朴一般分为两种;一种是打包成jar包直接执行,另一种是打包成war包放到tomcat处事器下。
打成jar包
假如你利用的是maven来打点项目,执行以下呼吁既可以
cd 项目跟目次(和pom.xml同级) mvn clean package ## 可能执行下面的呼吁 ## 解除测试代码后举办打包 mvn clean package -Dmaven.test.skip=true
打包完成后jar包会生成到target目次下,定名一般是 项目名+版本号.jar
启动jar包呼吁
java -jar target/spring-boot-scheduler-1.0.0.jar
这种方法,只要节制台封锁,处事就不能会见了。下面我们利用在靠山运行的方法来启动:
nohup java -jar target/spring-boot-scheduler-1.0.0.jar &
也可以在启动的时候选择读取差异的设置文件
java -jar app.jar --spring.profiles.active=dev
也可以在启动的时候配置jvm参数
java -Xms10m -Xmx80m -jar app.jar &
gradle
假如利用的是gradle,利用下面呼吁打包
gradle build java -jar build/libs/mymodule-0.0.1-SNAPSHOT.jar
打成war包
打成war包一般可以分两种方法来实现,第一种可以通过eclipse这种开拓东西来导出war包,别的一种是利用呼吁来完成,这里主要先容后一种
1、maven项目,修改pom包
将
<packaging>jar</packaging>
改为
<packaging>war</packaging>