JUnit 4.9リリース

数時間前 JUnit 4.9の最終バージョンが人気のあるTDDフレームワークJUnitのgithubに登場しました。 待望のリリースには何が含まれていましたか?

新しいルール


基本的に、以前のバージョンのルール( @Rule )で導入された影響を受ける変更。 以前と同様に、テストの機能は、メソッドレベルで追加のルールを使用して拡張できます。 これで、クラス全体、さらにはテストスイートの実装用のルールを定義できます。 どちらの場合も、新しいアノテーション@ClassRule accを使用して静的フィールドを定義することで結果が得られます。 テストクラス、またはスイート内。

そして、はい、デフォルトのBlockJUnit4ClassRunnerを含むParentRunnerすべての派生物は、新しい種類のルールを正しく処理します。

サーバーへの接続を一度作成し、すべてのスイートテストが完了した後に接続を閉じるテストスイートの例:

<br/>@RunWith(Suite. class )<br/>@SuiteClasses({A. class , B. class , C. class })<br/> public class UsesExternalResource {<br/> public static Server myServer= new Server();<br/> <br/> @ClassRule <br/> public static ExternalResource resource= new ExternalResource() {<br/> @Override <br/> protected void before() throws Throwable {<br/> myServer.connect();<br/> };<br/> <br/> @Override <br/> protected void after() {<br/> myServer.disconnect();<br/> };<br/> };<br/>}<br/> <br/>
MethodRuleへの注意:これらの革新に照らして、以前のMethodRuleインターフェースMethodRule非推奨になり、 deprecatedステータスにdeprecatedました。 ルール開発者は、新しいTestRuleインターフェイスを使用して、 @Rule@ClassRule両方で使用できるようにする必要があり@ClassRule

JUnit 4.9に含まれるルールの大部分は、すでに新しいインターフェイスに移行しています。 ほとんどのユーザーにとって、APIの変更は気付かれず、既存のテストを変更する必要はありません。

Maven-現在正式に


これまでのところ、匿名のボランティアはMavenのパッケージを作成しており、結果の質は低いです。 バージョン4.9以降、JUnit開発チームがこのタスクを引き継ぎます。 ただし、種類によって判断すると、JUnitの公式ビルドはまだAntで行われていることに注意してください。 それでも、みんなが新しいタスクにhamcrest-core対処し、たとえば、 hamcrest-core junit-depパッケージの推移的な依存関係を持つ古いレーキ(まだ除外してカットする必要がある)をhamcrest-coreないことを期待しましょう。

他に何?


プロジェクト構造の見た目の変更(GPLテキストがソースコードの一部になり、Antアセンブリが高速になりました)に加えて、重大なバグが修正されました。

-github# 98 :expectTrue()は予期される例外では機能しません
-github# 74 :カテゴリー+パラメーター化
-github# 38 :ParentRunnerが複数回フィルタリングします
-github# 248 :BlockJUnit4ClassRunnerの保護#rulesメソッドが4.8.2から削除されました
-github# 187 :Java 6への偶発的な依存
-github# 163 :assertEquals(String、String)を使用する場合の不正な比較失敗メッセージ
-github# 227 :ParentRunnerはgetChildren()が変更可能なリストを返すと仮定するようになりました

結論の代わりに


通常、変更のリストはマイナーリリースを正当化します。 コードの品質の改善に貢献した開発者に感謝の意を表し、Habrovsk市民に朗報を送ります。

Source: https://habr.com/ru/post/J126912/


All Articles