当前位置: 首页 > news >正文

微网站模板标签公众号平台登录官网

微网站模板标签,公众号平台登录官网,wordpress搜索修改,智能家居网站建设方案JUnit 5 是 Java 生态中最流行的单元测试框架&#xff0c;由 JUnit Platform、JUnit Jupiter 和 JUnit Vintage 三个子项目组成。以下是 JUnit 5 的全面使用指南及示例&#xff1a; 一、环境配置 1. Maven 依赖 <dependency><groupId>org.junit.jupiter</grou…

JUnit 5 是 Java 生态中最流行的单元测试框架,由 JUnit PlatformJUnit JupiterJUnit Vintage 三个子项目组成。以下是 JUnit 5 的全面使用指南及示例:


一、环境配置

1. Maven 依赖
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.3</version><scope>test</scope>
</dependency>
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.9.3</version><scope>test</scope>
</dependency>
2. Gradle 依赖
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.3'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.3'

二、核心注解

注解说明
@Test标记测试方法
@BeforeEach每个测试方法执行前运行
@AfterEach每个测试方法执行后运行
@BeforeAll所有测试方法执行前运行(静态方法)
@AfterAll所有测试方法执行后运行(静态方法)
@DisplayName自定义测试类或方法的显示名称
@Disabled禁用测试方法或类
@Nested定义嵌套测试类
示例
import org.junit.jupiter.api.*;class CoreAnnotationsTest {@BeforeAllstatic void initAll() {System.out.println("初始化全局资源");}@BeforeEachvoid init() {System.out.println("初始化测试资源");}@Test@DisplayName("测试加法")void testAddition() {Assertions.assertEquals(4, 2 + 2);}@AfterEachvoid tearDown() {System.out.println("清理测试资源");}@AfterAllstatic void tearDownAll() {System.out.println("清理全局资源");}
}

三、断言(Assertions)

JUnit 5 提供丰富的断言方法:

1. 基本断言
@Test
void basicAssertions() {// 相等性断言Assertions.assertEquals(4, 2 + 2);// 布尔断言Assertions.assertTrue(5 > 3);Assertions.assertFalse(3 > 5);// 空值断言String str = null;Assertions.assertNull(str);
}
2. 组合断言(Grouped Assertions)
@Test
void groupedAssertions() {String name = "John";Assertions.assertAll("组合断言",() -> Assertions.assertEquals("John", name),() -> Assertions.assertTrue(name.startsWith("J")));
}
3. 异常断言
@Test
void exceptionTesting() {Exception exception = Assertions.assertThrows(ArithmeticException.class,() -> { int result = 1 / 0; });Assertions.assertEquals("/ by zero", exception.getMessage());
}

四、参数化测试

使用 @ParameterizedTest 和不同的参数来源。

1. 添加依赖
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><version>5.9.3</version><scope>test</scope>
</dependency>
2. 示例
@ParameterizedTest
@ValueSource(ints = {1, 3, 5, 7})
void testOddNumbers(int number) {Assertions.assertTrue(number % 2 != 0);
}@ParameterizedTest
@CsvSource({"2, 3, 5", "5, 5, 10"})
void testAddition(int a, int b, int expected) {Assertions.assertEquals(expected, a + b);
}

五、嵌套测试

使用 @Nested 组织测试类结构:

class NestedTest {@Nestedclass WhenNew {@Testvoid testInitialState() {Assertions.assertTrue(true);}}@Nestedclass AfterAction {@Testvoid testAfterAction() {Assertions.assertFalse(false);}}
}

六、动态测试

运行时生成测试用例:

@TestFactory
Stream<DynamicTest> dynamicTests() {return Stream.of(DynamicTest.dynamicTest("动态测试1", () -> Assertions.assertTrue(true)),DynamicTest.dynamicTest("动态测试2", () -> Assertions.assertEquals(4, 2 + 2)));
}

七、超时测试

@Test
@Timeout(1) // 1秒超时
void testTimeout() throws InterruptedException {Thread.sleep(500); // 测试通过
}

八、扩展模型(Extension)

通过 @ExtendWith 自定义扩展:

class MyExtension implements BeforeEachCallback {@Overridepublic void beforeEach(ExtensionContext context) {System.out.println("自定义扩展逻辑");}
}@ExtendWith(MyExtension.class)
class ExtensionTest {@Testvoid testWithExtension() {Assertions.assertTrue(true);}
}

九、测试生命周期

JUnit 5 生命周期顺序:

  1. @BeforeAll
  2. @BeforeEach
  3. @Test
  4. @AfterEach
  5. @AfterAll

十、测试执行顺序

默认顺序是随机的,可通过 @TestMethodOrder 指定顺序:

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class OrderedTest {@Test@Order(1)void firstTest() {System.out.println("第一个测试");}@Test@Order(2)void secondTest() {System.out.println("第二个测试");}
}

总结

JUnit 5 提供了现代化的测试功能,包括参数化测试、动态测试、嵌套测试等。通过合理使用注解和断言,可以编写清晰、灵活的单元测试。更多高级用法可参考 JUnit 5 官方文档。

http://www.yayakq.cn/news/971518/

相关文章:

  • php网站开发的相关技术南宁企业网站建设技术公司
  • 优秀网站大全百度账号登录不了
  • 什么是php网站个人政务公开网站建设工作总结
  • 肃州区住房和城乡建设局网站有哪些简单的网站
  • 旅游网站的设计的前提可做百科资料参考的网站
  • 万创网站建设网站建设方案书是什么意思
  • 肇庆企业做网站WordPress最好版本
  • 广州站是不是广州火车站网站推广需要几个人做
  • 临西网站建设价格长沙网络公司大全
  • 网站维护企业大庆市住房与城乡建设局网站
  • 烟台论坛建站模板如何创建自己的商城
  • 做网站的网站违不违法大连网站 设计公司
  • 代码下载网站怎样用编程语言做网站
  • 网站免费推广wordpress数据库链接
  • 装修设计网站哪家好织梦欧美网站模板
  • 二次开发需要源代码吗企业网站seo外包 s
  • 做网站怎么选择上市公司厦门安岭路网站建设
  • 苏州网站建设机构wordpress 手机播放不了视频
  • 域名申请了怎么做网站python基础教程pdf第三版
  • 专业网站建设必要性淘宝可以在哪些网站上面打做推广
  • 网站改版怎么做301wordpress主题切换
  • 自己做网站建设方案怎么做电商平台怎么推广
  • 网站开发有哪几个阶段宿迁房产网官方网站
  • 建立个公司网站管理咨询岗位做什么
  • 购买网站空间自己怎样建立网站广州好蜘蛛网站建设公司
  • 买了域名怎么做网站网站建设在电子商务中意义
  • 网站建设时间及简介seo在线培训课程
  • 济南哪家公司可以做网站asp影视网站源码
  • 购物网站开发django房地产最新消息2022
  • 上海微信网站公司个人网站备案 照片