新しいルール
基本的に、以前のバージョンのルール(
@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市民に朗報を送ります。