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),我们将立即处理

评 论

论坛新帖



建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海信义律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道