zoukankan      html  css  js  c++  java
  • SpringBoot测试用例模板

    Service接口测试

    @RunWith(SpringJUnit4ClassRunner.class)
    //指定SpringBoot工程的Application启动类
    //支持web项目
    @WebAppConfiguration
    @SpringBootTest(classes = AppApplication.class, webEnvironment = SpringBootTest.WebEnvironment.MOCK)
    public class IndexControllerTest {
        @Autowired
        private IndexService indexService;
    
        @Test
        public void indexServiceTest() {
            String body = indexService.getStr();
            assertThat(body).isEqualTo("ok");
        }
    }

    这个是一个简单的Service测试,也是最开发中最常用的测试方式,直接注入Service调用方法能够获取到放回的内容,并且校验内容是否正确,`@SpringBootTest`提供了如下webEnvironment配置

    Rest 接口测试

    @RunWith(SpringRunner.class)
        @SpringBootTest(classes = AppApplication.class,
                webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
        public class IndexControllerTest {
            @Autowired
            private TestRestTemplate restTemplate;
            //注入端口号
            @LocalServerPort
            private int port;
            @Test
            public void indexControllerTest() {
                String body = this.restTemplate.getForObject("/index", String.class);
                assertThat(body).isEqualTo("ok"+port);
            }
        }

    <div class="se-preview-section-delimiter"></div>

    日志捕获测试

     @RunWith(SpringJUnit4ClassRunner.class)
        //指定SpringBoot工程的Application启动类
        //支持web项目
        @WebAppConfiguration
        @SpringBootTest(classes = AppApplication.class, webEnvironment = SpringBootTest.WebEnvironment.MOCK)
        public class OutputCaptureTest {
            private Log log = LogFactory.getLog(OutputCaptureTest.class);
            @Rule
            // 这里注意,使用@Rule注解必须要用public
            public OutputCapture capture = new OutputCapture();
    
            @Test
            public void testLogger() {
                System.out.println("sd");
                log.info("test");
                assertThat(capture.toString(), Matchers.containsString("test"));
            }
    
            @Test
            public void testSdLogger() {
                System.out.println("sd");
                assertThat(capture.toString(), Matchers.containsString("sd"));
            }
    
            @Test
            public void testNoSdLogger() {
                System.out.println("sd");
                assertThat(capture.toString(), Matchers.containsString("nod"));
            }
        }
  • 相关阅读:
    有几种不同类型的自动代理?
    使用 Spring 通过什么方式访问 Hibernate?
    单片,SOA 和微服务架构有什么区别?
    如何给 Spring 容器提供配置元数据?
    在 Spring AOP 中,关注点和横切关注的区别是什么?
    Java Concurrency API 中的 Lock 接口(Lock interface) 是什么?对比同步它有什么优势?
    移动文件用哪个命令?改名用哪个命令?
    synchronized 的作用?
    “a==b”和”a.equals(b)”有什么区别?
    什么是 Spring beans?
  • 原文地址:https://www.cnblogs.com/yhongyin/p/8967447.html
Copyright © 2011-2022 走看看