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

装修设计图网站排名企业邮箱注册申请免费注册官网

装修设计图网站排名,企业邮箱注册申请免费注册官网,代理网站建设,湖南网站制作公司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/714054/

相关文章:

  • 自助网站建设厦门网站制作个人做网站和百家号赚钱
  • 外贸建站优化推广如果做网站
  • 合肥比较好的网站制作做门户网站用什么模板好
  • 建站哪家好要认定兴田德润网站 服务器 域名
  • 如何看网站做打好坏西安网站建设维护
  • 厦门创意网站建设哈尔滨建站的网站网页
  • 易语言可以做网站后端品牌网站建设坚持大蝌蚪
  • 海沧网站建设是否有补助个人网站制作毕业设计选题重难点
  • 门窗 东莞网站建设百度视频
  • jsp做的网站效果网域高科学校网站管理系统漏洞
  • 温州网站建设平台好网页设计培训
  • 建设厅官方网站职称产品策划书范文案例
  • 企业网站制作需要多少费用在线设计平台 类似pixao
  • dz论坛做视频网站教程上海有哪些做网站的公司
  • 网站建设申请方案合肥网站建设策划方案
  • asp.net建网站办公室电脑局域网组建
  • 搭建网站内链系统网站搭建联系方式
  • 电子商务网站建设 大纲wordpress 菜单字体大小
  • 怎样做号网站优化做阿里巴巴类似的网站吗
  • 建设旅行网站做英文网站需要多少
  • 网站建设费能不能认定为广告费wordpress迁移容易
  • 网站建设公司专业网站开发需求金蝶软件多少钱
  • 杭州网站建设官方蓝韵网络股票推荐怎么做网站
  • 网站模版开发最新新闻事件今天国内视频
  • 运动猿app 网站开发哪个手游平台折扣最低又安全
  • 珠宝购物网站的建设库存管理系统
  • 旅游网站名称设计装修网店
  • 页面设计作品青岛seo优化公司
  • 个人单页网站建设wordpress acg
  • wordpress微博采集宁波seo公司哪家好