JUnitフレームワークには2つのAssert
クラス(異なるパッケージに含まれる)が含まれており、それぞれのメソッドは非常によく似ています。誰がこれがなぜなのか説明できますか?
私が言及しているクラスは: junit.framework.Assert
および org.junit.Assert
。
(JUnit 3の)古い方法は、junit.framework.TestCase
を拡張してテストクラスをマークすることでした。 junit.framework.Assert
自体を継承し、テストクラスはこの方法でassertメソッドを呼び出す機能を獲得しました。
JUnitのバージョン4以降、フレームワークはテストのマーキングにAnnotations
を使用します。したがって、TestCase
を拡張する必要はなくなりました。しかし、それは、assertメソッドが利用できないことを意味します。ただし、新しいAssert
クラスの静的インポートを作成できます。そのため、新しいクラスのすべてのassertメソッドは静的メソッドです。したがって、次の方法でインポートできます。
import static org.junit.Assert.*;
この静的インポートの後、プレフィックスなしでこのメソッドを使用できます。
再設計時に、彼らはまた、パッケージの命名に関する通常の慣習によりよく従う新しいパッケージorg.junit
に移動しました。
JUnit 3.X:junit.framework.Assert
JUnit 4.X:org.junit.Assert
特にアノテーションをサポートしてJDK5以降を実行している場合は、最新のものを優先してください。
実際には機能的な変更があります。2つの引数assertEquals()
をfloat
またはdouble
とともに使用すると、org.junit.Assert
は文句を言いますが、junit.framework.Assert
黙ってオートボックスします。
junit.framework
からorg.junit
にリファクタリングしており、junit.framework.Assert
は後方互換性のために維持されていると思います。
大まかなソースコードを比較しましたが、重大な変更はありません。 org.junit.Assert
に多くのコメントが追加され、いくつかのリファクタリングが行われました。唯一の変更点は、Arrays
との比較です。コードのクリーンアップはいくつかありますが、(imho)機能の変更なしがあります。