Java 单元测试之合格的单元测试方式(2)

发表于:2021-11-19 09:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:fenglllle    来源:稀土掘金

  3. Spring的Junit测试
  3.1 Spring MVC
  Junit4
  @RunWith(SpringJUnit4ClassRunner.class)
  @ContextConfiguration("classpath:my-spring.xml")
  public class MyServiceTest {
      
      @Autowired
      private MyService xxx;
      @Test
      public void testFind() {
          xxx.xxx();
      }
  }
  junit5
  注意junit5在RunWith注解变为ExtendWith,其中一个显著的优势是可以加载多个class了。
  @RunWith
  @ExtendWith
  完整示例如下:
  @ExtendWith(SpringExtension.class)
  @ContextConfiguration("classpath:my-spring.xml")
  public class MyServiceTest {
      
      @Autowired
      private MyService xxx;
      @Test
      public void testFind() {
          xxx.xxx();
      }
  }
  观看Spring源码也可以看出,junit5命名也变了,叫jupiter。
  3.2 Spring boot junit
  //@RunWith(SpringRunner.class) //junit4加上
  @SpringBootTest
  class ApplicationTests {
  }
  4.testng
  TestNG : 即Testing Next Generation,用JDK的annotation技术来强化测试功能,借助XML 文件强化测试组织结构而构建的测试框架。笔者也没使用过,有官方文档:testng.org/doc/documen…;据说功能更强大,支持xml方式。
  引入pom,官方更新没有junit5频繁。
  <!-- https://mvnrepository.com/artifact/org.testng/testng -->
  <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>7.1.0</version>
      <scope>test</scope>
  </dependency>
  笔者也只是简单的使用过,不过一般而言,只会使用20%的功能(二八原则),改造demo。
  package com.feng.demo;
  import org.assertj.core.api.Assertions;
  import org.testng.annotations.BeforeSuite;
  import org.testng.annotations.Test;
  class UserTest {
      @BeforeSuite
      static void before(){
      }
      @Test
      void getResult() {
          User user = new User();
          String result = user.getResult("tom");
          Assertions.assertThat(result).isEqualTo("tom\tjunit", result);
      }
      @Test
      void setName() {
      }
  }
  更详细的可以看上面的链接文档,etg
  总结
  junit单元测试其实很简单,很多时候我们并没有规范而已。关于代码测试覆盖率,其实idea工具很完善了,eclipse同理。以idea为例。
  在代码类上右键:
  选择Test
  即可自动生成单元测试,测试后就有覆盖率统计。
  结果如下:

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号