lsekfe 发表于 2021-11-19 14:21:46

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

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

即可自动生成单元测试,测试后就有覆盖率统计。


结果如下:


页: [1]
查看完整版本: Java 单元测试之合格的单元测试方式(2)