JUnit5中扩展模型的深入理解-创新互联

什么是Junit5 ?

创新互联是专业的公安网站建设公司,公安接单;提供成都网站建设、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行公安网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

先看来个公式:

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

这看上去比Junit4 复杂,实际上在导入包时也会复杂一些。

JUnit Platform是在JVM上启动测试框架的基础。

JUnit Jupiter是JUnit5扩展的新的编程模型和扩展模型,用来编写测试用例。Jupiter子项目为在平台上运行Jupiter的测试提供了一个TestEngine (测试引擎)。

JUnit Vintage提供了一个在平台上运行JUnit 3和JUnit 4的TestEngine 。

关键要点

  • JUnit 5是一个模块化和可扩展的测试框架,支持Java 8及更高版本。
  • JUnit 5由三个部分组成——一个基础平台、一个新的编程和扩展模型Jupiter,以及一个名为Vintage的向后兼容的测试引擎。
  • JUnit 5 Jupiter的扩展模型可用于向JUnit中添加自定义功能。
  • 扩展模型API测试生命周期提供了钩子和注入自定义参数的方法(即依赖注入)。

JUnit是最受欢迎的基于JVM的测试框架,在第5个主要版本中进行了彻底的改造。JUnit 5提供了丰富的功能——从改进的注解、标签和过滤器到条件执行和对断言消息的惰性求值。这让基于TDD编写单元测试变得轻而易举。新框架还带来了一个强大的扩展模型。扩展开发人员可以使用这个新模型向JUnit 5中添加自定义功能。本文将指导你完成自定义扩展的设计和实现。这种自定义扩展机制为Java程序员提供了一种创建和执行故事和行为(即BDD规范测试)的方法。

我们首先使用JUnit 5和我们的自定义扩展(称为“StoryExtension”)来编写一个示例故事和行为(测试方法)。这个示例使用了两个新的自定义注解“@Story”和“@Scenario”,以及“Scene”类,用以支持我们的自定义StoryExtension:

import org.junit.jupiter.api.extension.ExtendWith;
 
import ud.junit.bdd.ext.Scenario;
import ud.junit.bdd.ext.Scene;
import ud.junit.bdd.ext.Story;
import ud.junit.bdd.ext.StoryExtension; 
 
@ExtendWith(StoryExtension.class)
@Story(name=“Returns go back to the stockpile”, description=“...“)
public class StoreFrontTest {
 
 @Scenario(“Refunded items should be returned to the stockpile”)
 public void refundedItemsShouldBeRestocked(Scene scene) {
  scene
   .given(“customer bought a blue sweater”,
      () -> buySweater(scene, “blue”))
 
   .and(“I have three blue sweaters in stock”,
      () -> assertEquals(3, sweaterCount(scene, “blue”),
        “Store should carry 3 blue sweaters”))
 
   .when(“the customer returns the blue sweater for a refund”,
      () -> refund(scene, 1, “blue”))
 
   .then(“I should have four blue sweaters in stock”,
      () -> assertEquals(4, sweaterCount(scene, “blue”),
        “Store should carry 4 blue sweaters”))
   .run();
 }
}

当前文章:JUnit5中扩展模型的深入理解-创新互联
标题链接:http://scyanting.com/article/hhdds.html