BT

JUnit 5リリース

| 作者: Amit K Gupta フォローする 6 人のフォロワー , 翻訳者 sasai フォローする 0 人のフォロワー 投稿日 2017年10月26日. 推定読書時間: 4 分 |

原文(投稿日:2017/10/24)へのリンク

JUnit 5がリリースされた。2006年にリリースされたJUnit 4以来のメジャーリリースだ。ユーザーガイドによると、JUnit 5の主たる目標の一つは、JUnitの今後の機能強化と進化を容易にすることにある。

JUnit 4では、もともと内部構造としてのみ追加された多くのものが、外部拡張作者とツール作者によって使われていました。そのため、JUnit 4の変更は極めて難しく、時には不可能になっていました。

JUnit 5チームは、テスティングフレームワークを再設計し、2つの領域に分割することで、この問題を解決した。

  1. テストを書くためのAPIセット
  2. テストを発見、フィルター、実行するために、ツール作者が使えるJUnit Platform Launcher API

JUnit 5は、JUnit Jupiter、JUnit Platform、JUnit Vintage (後方互換性のため)という、3つのサブプロジェクトの集合になっている。

JUnit Jupiter は、テスト拡張を書くためのAPIを提供する。@TestのようなJUnit 4でおなじみのアノテーションと、@DisplayNameのような新しいアノテーションを含んでいる。一部のアノテーションはリネームされている。

JUnit 5 JUnit 4
@BeforeEach @Before
@AfterEach @After
@BeforeAll @BeforeClass
@AfterAll @AfterClass
@Disabled @Ignore

JUnit 5で使えるアノテーションの一覧については、ユーザーガイドを参照してほしい。

JUnit 5には、Java 8のLambdaでうまく機能するassertAllのような新しいアサーションが含まれている。

public class SampleTest {
  @Test
    void groupedAssertions() {
        // In a grouped assertion all assertions are executed, and any
        // failures will be reported together.
        assertAll("person",
            () -> assertEquals("John", person.getFirstName()),
            () -> assertEquals("Doe", person.getLastName())
        );
    }
}

JUnit 5では、ネストされたテストという概念も導入された。これを使うことで、開発者は関連のあるテストをまとめることができる。

JUnit 5の拡張モデルは、JUnit 4のRunner@Rule@ClassRuleという拡張ポイントを、単一のExtension APIに置き換える。拡張は、@ExtendWithを使って明示的に登録することもできるし、JavaのServiceLoaderメカニズムで自動的に登録することもできる。

@ExtendWith(MockitoExtension.class)
@Test
void mockTest() {
    // ...
}

JUnit Platformはテストの発見、フィルタリング、実行のための基盤を提供する。

ユーザーガイドによると、

JUnit 5の重要な目標の一つは、JUnitとそのクライアントプログラム – ビルドツールやIDE – とのインターフェイスを、もっと強力に、安定したものにすることです。狙いは、外部から必要とされる全てのフィルタリングおよび設定と、テストの発見と実行の内部とを切り離すことにあります。

これはJUnitのLauncher APIによって実現された。このAPIは通常、IDEとビルドツールがテストプランを設定して起動するために利用する。カスタムのTestEngineを与えることで、サードパーティのテストライブラリもJUnit Platformの起動にプラグインできる。

コマンドラインJavaアプリケーションConsoleLauncherを使うことで、開発者はJUnit Platformをコンソールから起動することができる。

JUnit Vintage は、JUnit 3やJUnit 4で書かれたテストを新しいプラットフォームで実行可能にするためのテストエンジンだ。開発者はテストのランタイムパスにjunit-vintage-engineを含める必要がある。そうすることで、JUnit Platform Launcherはレガシーなテストを自動的にピックアップする。

今回のリリースは、ランタイムとしてJava 8(またはそれ以上)を必要とする。このことは、主要なライブラリの最新版がJava 8を最小バージョン要件だとみなしている、というトレンドを明確に示している。

JUnit 5は、EPL v2.0ライセンスでリリースされる最初のプロジェクトの一つだ。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT