JUnit5使用总结

简介: JUnit5使用总结

要使用的话,在build.gradle 里要添加

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter:5.+';
    }
    test {
      useJUnitPlatform();
  }

看一下几个注解在junit4和junit5版本不同的写法:

junit4 junit5    使用场景
@BeforeClass @BeforeAll  在当前类的所有测试方法之前执行。注解在【静态方法】上
@AfterClass @AfterAll  在当前类中的所有测试方法之后执行。注解在【静态方法】上
@Before @BeforeEach 在每个测试方法之前执行。注解在【非静态方法】上
@After @AfterEach 在每个测试方法之后执行。注解在【非静态方法】上

   

  使用方式如下:

import org.junit.*;
public class TestJunitAnnotation {
    @BeforeClass
    public static void beforeClass(){
        System.out.println("before class:begin this class*************");
    }
    @AfterClass
    public static void afterClass(){
        System.out.println("after class:end this class--------------");
    }
    @Before
    public void before(){
        System.out.println("before:begin test");
    }
    @After
    public void after(){
        System.out.println("after:end test");
    }
    @Test
    public void Test(){
        System.out.println("[this is a test!]");
    }
    @Test
    public void Test2(){
        System.out.println("[this is another test!]");
    }
}

@test测试先后顺序

以下是junit4的使用,在类声明上加

 

1.从上到下 执行@Test,这个不靠谱
@FixMethodOrder(MethodSorters.JVM)
2.按方法名字顺序执行
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
3.默认方法,不可预期
@FixMethodOrder(MethodSorters.DEFAULT)

以下是junit5的使用方式

//按照数字顺序
@TestMethodOrder (MethodOrderer.OrderAnnotation.class)
public class OOXXTest {
@Test
@Order(1)
public void one() throws Exception {
}
@Test
@Order(2)
public void two() throws Exception {
}
//字母数字顺序
@TestMethodOrder (MethodOrderer.Alphanumeric.class) 
//随机排序
@TestMethodOrder (MethodOrderer.Random.class)

@DisplayName可以让测试结果显示更加nice

可以对类和方法做注释

@DisplayName("压缩测试")
@TestMethodOrder (MethodOrderer.OrderAnnotation.class)
public class CompressTest {...}
@Test
@DisplayName("Zstandard解压缩")
@Order(2)
public void zstandarDecompress() throws Exception
{...}

对某个方法进行重复测试

@RepeatedTest(value = 3, name = "{displayName} 第 {currentRepetition}/{totalRepetitions} 次")
public void zlibDecompress() throws Exception {}

参数化测试,可以用于很多不同参数的数据测试

@ParameterizedTest
@ValueSource(strings = {"one", "two", "three"})
@DisplayName("参数化测试")
public void parameterizedTest(String string) {
  System.out.println(string);
  Assertions.assertTrue(StringUtils.isNotBlank(string));
}

最后看下效果:

对同一个方法进行多次测试

@RepeatedTest(10000)

如何进行多线程测试,首先要在resources目录下创建文件junit-platform.properties,内容如下:

junit.jupiter.execution.parallel.enabled=true
#类内部方法并行
junit.jupiter.execution.parallel.mode.default = concurrent
#类之间串行
junit.jupiter.execution.parallel.mode.classes.default = same_thread
# the maximum pool size can be configured using a ParallelExecutionConfigurationStrategy
junit.jupiter.execution.parallel.config.strategy=fixed
junit.jupiter.execution.parallel.config.fixed.parallelism=8

然后,在想要多线程执行的类的方法上加上注解:

@Execution(ExecutionMode.CONCURRENT)

如果临时性的不想跑部分测试方法,只需要在方法上加

@Disabled

参考:

该升级你的JUnit版本了——JUnit5基本介绍

目录
相关文章
|
5月前
|
Java 测试技术
详解junit
详解junit
42 0
|
6月前
|
Java 测试技术 Android开发
Junit
Junit
68 1
|
Java 测试技术 Maven
PowerMock+Junit的使用
今天使用PowerMock进行单元测试,
150 0
|
测试技术
Junit 学习笔记
Junit 学习笔记
85 0
|
Java 测试技术 Spring
关于 JUnit
所谓的单元测试是测试应用程序的功能是否能够按需要正常运行,单元测试是一个对单一实体(类或方法)的测试。
135 0
|
测试技术
junit3和junit4的比较
junit3和junit4的比较
126 0
|
测试技术 Android开发 开发工具