[Spring]~@SpringBootTest(单元测试)

[Spring]~@SpringBootTest(单元测试)1.添加Maven依赖<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><groupId>org.springfram…

大家好,又见面了,我是你们的朋友全栈君。

1. 添加Maven依赖

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
 
 
 

    2. 编写启动入口类

    @SpringBootApplication
    public class StartUpApplication { 
       
        public static void main(String[] args) {
            SpringApplication.run(StartUpApplication.class, args);
        }
    }
     
     
     

      3. 编写Controller类

      @RestController
      public class HelloController { 
         
      
          @RequestMapping("/")
          public String index() {
              return "Hello Spring Boot,Index!";
          }
      
          @RequestMapping(value = "/test", method = RequestMethod.GET)
          public String test() {
              return "Spring Boot Test Demo!";
          }
      }
       
       
       

        4. 编写测试

        @RunWith(SpringRunner.class)
        @SpringBootTest(classes = StartUpApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
        public class HelloControllerTest { 
           
        
            /** * @LocalServerPort 提供了 @Value("${local.server.port}") 的代替 */
            @LocalServerPort
            private int port;
        
            private URL base;
        
            @Autowired
            private TestRestTemplate restTemplate;
        
            @Before
            public void setUp() throws Exception {
                String url = String.format("http://localhost:%d/", port);
                System.out.println(String.format("port is : [%d]", port));
                this.base = new URL(url);
            }
        
            /** * 向"/test"地址发送请求,并打印返回结果 * @throws Exception */
            @Test
            public void test1() throws Exception {
        
                ResponseEntity<String> response = this.restTemplate.getForEntity(
                        this.base.toString() + "/test", String.class, "");
                System.out.println(String.format("测试结果为:%s", response.getBody()));
            }
         
         
         

          其中,classes属性指定启动类,SpringBootTest.WebEnvironment.RANDOM_PORT经常和测试类中@LocalServerPort一起在注入属性时使用。会随机生成一个端口号。

          总结

          我们发现,随着Spring boot 版本的提升,单元测试变得更简单了。

          版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

          发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139661.html原文链接:https://javaforall.net

          (0)
          上一篇 2022年5月29日 下午1:16
          下一篇 2022年5月29日 下午1:16


          相关推荐

          • js动画效果大全_jquery 动画

            js动画效果大全_jquery 动画动画基础(1)位置(2)时间(3)设置时间增量(4)抽象用动画增强网页效果(1)设置动画(2)变量作用域(3)改进(4)生成HTML标记添加安全检查

            2022年8月31日
            3
          • portlet java_[Java] 使用 Spring 2 Portlet MVC 框架构建 Portlet 应用

            portlet java_[Java] 使用 Spring 2 Portlet MVC 框架构建 Portlet 应用Spring 除了支持传统的基于 Servlet 的 Web 开发之外 也支持 JSR168Portle 的开发 SpringPortle 框架尽可能多地继承了 SpringServle 框架技术 使用了相同的底层表现层抽象和整合技术 同时 由于 JSR168Portle 独特的工作流程 SpringPortle 框架的使用过程较之 SpringS

            2026年3月18日
            1
          • 【搜索】八皇后「建议收藏」

            【搜索】八皇后「建议收藏」这道题应该不陌生吧,这是一道很经典的搜索题。总的意思就是说在一个n*n的棋盘上放n个皇后,要求它们互不攻击,求解有多少种情况,并输出前三种。那么开始分析:这毕竟是一道搜索题,搜索最大的弊端是什么,

            2022年8月4日
            9
          • Changing Leisure Activities_register to do

            Changing Leisure Activities_register to dojsp: &lt;inputname="test"id="test"value=""class="validate[required,funcCall[myTest]]"&gt;   js:  不能使用ajax异步数据,可以参考:http://yuhaijunll.iteye.com/admin/blogs/1765620 functionmyTest…

            2022年10月4日
            6
          • 苹果手表使用|watchOS 7+自动化:Apple Watch使用方法

            苹果手表使用|watchOS 7+自动化:Apple Watch使用方法随着 AppleWatch 表现出越来越脱离 iPhone 附件的趋势 相信它在将来一定会作为独立的电子设备大放异彩 而在 AppleWatch 的使用过程中 有一个话题怎么也不会被绕开 就是表盘 我的 AppleWatch 使用方法也是基于主题表盘的打造和切换 在 watchOS7 到来后 这可以变得更简单 接下来我将以 AppleWatch 的一天 形式来为大家介绍 开始前 我把表盘图库推出的所有表盘简单地分成了两类 时尚类和实用类 时尚类表盘刻度盘由全屏幕改为圆盘反而牺牲了美观性 比如

            2025年7月21日
            8
          • 使用PHPExcel导入导出excel格式文件

            使用PHPExcel导入导出excel格式文件

            2021年12月1日
            44

          发表回复

          您的邮箱地址不会被公开。 必填项已用 * 标注

          关注全栈程序员社区公众号