「译」JUnit 5 系列:环境搭建 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
linesh
V2EX    程序员

「译」JUnit 5 系列:环境搭建

  •  
  •   linesh
    linesh-simplicity 2016-09-17 20:55:46 +08:00 2213 次点击
    这是一个创建于 3309 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原文地址:http://blog.codefx.org/libraries/junit-5-setup/
    原文日期: 15, Feb, 2016
    译文首发: Linesh 的博客:环境搭建
    我的 Github :http://github.com/linesh-simplicity

    2015 年 11 月,Junit Lambda 团队发布了该项目的 第一版原型 。此后,该项目把名称改成了 JUnit 5 并独立了出来,随后在 2016 年 2 月份的时候发布了一个 alpha 版本。本篇打算以一系列文章,简短地探索一下以下几个方面:

    (如果不喜欢看文章,你可以戳这里看我的演讲,或者看一下最近的 vJUG 讲座,或者我在 DevoxxPL 上的 PPT

    本篇将介绍 JUnit 5 的环境搭建,看完之后你应该能够使用新的 API 来撰写测试,并且使用你喜欢的 IDE 或构建工具来跑这些测试了。

    概述

    本系列文章都基于 Junit 5 发布的先行版 Milestone 2。它可能会有变化。如果有新的里程碑( milestone )版本发布,或者试用版正式发行时,我会再来更新这篇文章。

    这里要介绍的多数知识你都可以在 JUnit 5 用户指南 中找到(这个链接指向的是先行版 Milestone 2 ,想看的最新版本文档的话请戳这里),并且指南还有更多的内容等待你发掘。下面的所有代码都可以在 我的 Github 上找到。

    目录

    • 第一个测试
    • 运行测试
      • 使用 JUnit 4 runner
      • IDE 的支持
      • 构建工具的支持
      • 命令行支持也不赖
    • 向下兼容性
    • 回顾
    • 分享&关注

    第一个测试

    支持测试撰写的 API 包含在junit-jupiter-api 包中。在构建工具中引入这个包,就行了。这就是全部,你就可以开始写测试了。

    • Group ID: org.junit.jupiter
    • Artifact ID: junit-jupiter-api
    • Version: 5.0.0-M2

    我们来写第一个测试吧,此处简单最好:

    package org.codefx.demo.junit5; import org.junit.jupiter.api.Test; class HelloWorldTest { @Test void helloJUnit5() { System.out.println("Hello, JUnit 5."); } } 

    看起来怎样?没 public ,感觉帅气不?这里我不会太深入细节讲解,不过下一篇我会深入讨论下这个(以及其他的一些基础)。请别急,接着往下看。

    运行测试

    JUnit 5 是一代全新的测试框架,不过工具内置的支持则还未完全跟上。好在目前已有简易的方法来运行 JUnit 5 及其测试。

    使用 JUnit 4 runner

    JUnit 团队提供了一个 JunitPlatform runner,可以使用它在 Junit 4 上运行 JUnit 5 的测试。这个 runner 在另一个包下,因此你也必须将它加入到你的项目中:

    • Group ID: org.junit.platform
    • Artifact ID: junit-platform-runner
    • Version: 1.0.0-M2

    这个 runner 最终会调用 Junit 引擎,后者才是真正运行 Junit 5 测试的部分。引擎也是在不同的包下,你也必须将它加入到项目中:

    • Group ID: org.junit.jupiter
    • Artifact ID: junit-jupiter-engine
    • Version: 5.0.0-M2

    要运行项目中所有的测试,为它们创建一个测试套件是最简单的做法:

     package org.codefx.demo.junit5; import org.junit.platform.runner.JUnitPlatform; import org.junit.platform.runner.SelectPackages; import org.junit.runner.RunWith; @RunWith(JUnitPlatform.class) @SelectPackages({ "org.codefx.demo.junit5" }) public class TestWithJUnit5 { } 

    不过请注意,这个类必须是一个 JUnit 4 的测试类,也即是说它必须遵循 一般的命名规范,并且必须是 public 的。@SelectPackages 注解会把包当做一个有层级的结构,因此它会负责跑 org.codefx.demo.junit5 开头的包下的所有测试。

    至此所有工作都完成了!你的 IDE 和构建工具应该都能运行这个 @RunWith(JUnitPlatform.class) 注解的测试类了,它会负责跑所有的 JUnit 5 的新测试。

    不过在 JUnit 5 被完全支持之前,一些特性可能还不能工作,比如 IDE 无法运行单独的测试等。不过目前为止,这是我发现的最简单并且在多平台下均工作良好的方案了。

    IDE 的支持

    Intellij IDEA 2016.2 开始 对 JUnit 5 有了基本的支持。尽管支持还不是很完美,并且还需时刻关注 JUnit 5 的发展,不过毕竟最基本的支持有了,现在使用 JUnit 5 已经简单得多了。

    Eclipse 方面团队 仍在着手于内置支持的开发

    构建工具的支持

    JUnit 团队在为构建工具提供 JUnit 5 支持的基础上已经做了大量的工作,比如提供与 JUnit 4 的兼容等。目前,我们已经有了一个可以工作的 Gradle 插件和 Maven Surefire 插件。这两个项目都计划在接下来的时间里交给各自的社区去开发和维护。

    在如何集成这两个构建工具(GradleMaven)的插件上,已经各有一个示例代码库。更多细节请前往 官方用户指南

    命令行支持也不赖

    如果你觉得你就想静静地跑个测试,上面介绍的 IDE 和构建工具都太复杂了,那么建议你试下这个 控制台 launcher,它支持你直接在命令行运行测试。要使用它,请 下载这个 zip 包

    遗憾的是,它 还需要你做些配置,而非拿来即用的。你需要将上面提到的两个包 junit-jupiter-apijunit-jupiter-engine 移动到 lib 目录下,并编辑 bin 下执行脚本的 classpath 使其指向你的 lib 目录:CLASSPATH=$APP_HOEM/lib/*。这样该 launcher 才能运行。

    不考虑其他依赖的话,这个执行脚本大概长得像这样:

    # run all tests junit-platform-console -p ${path_to_compiled_test_classes} -a # run a specific test junit-platform-console -p ${path_to_compiled_test_classes} org.codefx.demo.junit5.HelloWorldTest 

    向下兼容性

    你可能注意到了, JUnit 5 启用了新的包名:org.junit.jupiterorg.junit.platformorg.junit.vintage (这个包我们尚未谈到)。我们待会再讨论它们的含义,现在我们只需知道,这意味着你可以在一个项目中使用不同的 JUnit 版本,这就够了。

    允许在同个项目中使用多个版本的 JUnit 来进行测试,这使得你能缓缓迁移到 JUnit 5 上。关于迁移,我们在探讨 JUnit 新的架构 时会再回顾这个话题。

    通过异常( exceptions )于 JUnit 交互的测试库,诸如 Hamcrest 和 AssertJ 等,易燃可以在 JUnit 的新版本下工作。这里有个使用 Mockito 和 AssertJ 写的 HelloWorldTest 测试,有兴趣的同学可以看下。

    回顾

    在这篇 JUnit 5 环境搭建的文章中,我们介绍了 junit-jupiter-apijunit-jupiter-engine 两个包,在项目中使用了 junit-platform-runner ,写了第一个最简单的测试用例,并将它作为 JUnit 4 测试套件的一部分运行了起来。

    下篇文章 我会讨论使用 JUnit 5 撰写测试的一些基础知识。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3573 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 04:16 PVG 12:16 LAX 21:16 JFK 00:16
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86