• springboot(十二):springboot单元测试、打包部署


    单元测试

    1、在pom包中添加spring-boot-starter-test包引用

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    View Code

    2、开发测试类

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class ApplicationTests {
    
        @Test
        public void hello() {
            System.out.println("hello world");
        }
    
    }
    View Code

      实际使用中,可以按照项目的正常使用去注入dao层代码或者是service层代码进行测试验证,spring-boot-starter-test提供很多基础用法,更难得的是增加了对Controller层测试的支持。

    //简单验证结果集是否正确
    Assert.assertEquals(3, userMapper.getAll().size());
    
    //验证结果集,提示
    Assert.assertTrue("错误,正确的返回值为200", status == 200); 
    Assert.assertFalse("错误,正确的返回值为200", status != 200); 
    View Code

      引入了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")));
        }
    
    }
    View Code

    集成测试

      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>
    View Code

    打成jar包

      springboot的打包方式有很多种。有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的。这里主要介绍如何打成jar进行部署。不推荐用war,因为springboot适合前后端分离,打成jar进行部署更合适。

    在 IDEA 上 File--->Setting--->Project Structure

    启动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

    https://www.cnblogs.com/ityouknow/p/6834287.html

    https://blog.csdn.net/weixin_40423572/article/details/80556043

    打成war包

    1、maven项目,修改pom包

    <packaging>jar</packaging>  

    改为

    <packaging>war</packaging>

    2、打包时排除tomcat.

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

    3、注册启动类

      创建ServletInitializer.java,继承SpringBootServletInitializer ,覆盖configure(),把启动类Application注册进去。外部web应用服务器构建Web Application Context的时候,会把启动类添加进去。

    public class ServletInitializer extends SpringBootServletInitializer {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(Application.class);
        }
    }

     4、IntelliJ IDEA导出war包

      点击“Build”,选择“Build Artifacts”...

     部署

  • 相关阅读:
    mina2中的session
    mina2的processor
    Spring Cloud 各组件调优参数
    可重入锁
    微服务架构的基础框架选择:Spring Cloud还是Dubbo?
    服务注册发现consul之五:Consul移除失效服务的正确姿势
    Spring Cloud构建微服务架构(七)消息总线
    springboot+swagger
    Spring Cloud config之二:Spring cloud config Server源码分析
    Spring Cloud config之一:分布式配置中心config server介绍
  • 原文地址:https://www.cnblogs.com/cnki/p/9391193.html
Copyright © 2020-2023  润新知