Java单元测试

Java中的JUnit单元测试

Java原生并没有提供单元测试的方法,一般的简单测试使用main方法进行测试,但是如果对于复杂的测试,则需要使用第三方框架来实现,例如JUnit框架

官网:JUnit 5

JUnit5 的组成:JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

JUnit5 建议使用 Java8 及以上版本

  • JUnit Platform 是在 JVM 上启动测试框架的基础,它定义了TestEngine在平台运行的新测试框架的 API
  • JUnit Jupiter 它用于编写测试代码的新的编程和扩展模型。它具有所有新的 Junit 注释和TestEngine实现来运行这些注释编写的测试。
  • JUnit Vintage JUnit4 已经存在了很长时间,并且有许多以 JUnit4 编写的测试。JUnit Jupiter 还需要支持这些测试。为此,开发了 JUnit Vintage 子项目。提供了一个测试引擎,用于在平台上运行基于 JUnit 3 和 JUnit 4 的测试。它要求 JUnit 4.12 或更高版本出现在类路径或模块路径中。从它的名字 Vintage(古老的)中也能有所体会。

4和5的区别

JUnit4

  • @Test的包是org.junit.Test
  • 需要@RunWith(SpringRunner.class)
  • 测试类和测试方法需要public修饰

JUnit5

  • @Test的包是org.junit.jupiter.api.Test
  • 不需要@RunWith(SpringRunner.class)
  • 测试类和测试方法不需要public修饰

SE项目不同IDE的使用

  • Eclipse

    • 选中当前工程,右键选择:build path - add libraries - JUnit 4 - 下一步
    • 创建Java类,进行单元测试。
    • 此类中声明单元测试方法。
    • 此单元测试方法上需要声明注解:@Test,并在单元测试类中导入:import org.junit.Test;
    • 声明好单元测试方法以后,就可以在方法体内测试相关的代码。
    • 写完代码以后,左键双击单元测试方法名,右键:run as - JUnit Test
  • IDEA

    • 在代码空白位置右键,Generate,Test

      • Testing library选择Junit版本
      • Class name输入测试类名称
      • Destination packages选择测试类的包
      • Member选择要要测试的方法
    • OK

注解

Annotations描述
@BeforeEach在方法上注解,在每个测试方法运行之前执行。
@AfterEach在方法上注解,在每个测试方法运行之后执行
@BeforeAll该注解方法会在所有测试方法之前运行,该方法必须是静态的。
@AfterAll该注解方法会在所有测试方法之后运行,该方法必须是静态的。
@Test用于将方法标记为测试方法
@DisplayName用于为测试类或测试方法提供任何自定义显示名称
@Disable用于禁用或忽略测试类或方法
@Nested用于创建嵌套测试类
@Tag用于测试发现或过滤的标签来标记测试方法或类
@TestFactory标记一种方法是动态测试的测试工场

常用测试方式

普通测试

@Test
void testDemo() {
}

重复性测试

@RepeatedTest(5)
void testDemo(TestInfo testInfo,RepetitionInfo repetitionInfo){

  System.out.println("repeat:" + testInfo.getDisplayName());
  System.out.println("这是第 "+ repetitionInfo.getCurrentRepetition()+ "次重复");

}

参数测试

@ParameterizedTest
@ValueSource(strings = {"java", "python", "go"})
void testDemo(String candidate) {
    assertTrue(candidate.contains("o"));
}

超时测试

@Test
@Timeout(value = 500, unit = TimeUnit.MILLISECONDS)
void testDemo() {
    // fails if execution time exceeds 500 milliseconds
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GradyYoung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值