web-dev-qa-db-ja.com

2つのJUnit Assertクラスの違い

JUnitフレームワークには2つのAssertクラス(異なるパッケージに含まれる)が含まれており、それぞれのメソッドは非常によく似ています。誰がこれがなぜなのか説明できますか?

私が言及しているクラスは: junit.framework.Assert および org.junit.Assert

252
Dónal

(JUnit 3の)古い方法は、junit.framework.TestCaseを拡張してテストクラスをマークすることでした。 junit.framework.Assert自体を継承し、テストクラスはこの方法でassertメソッドを呼び出す機能を獲得しました。

JUnitのバージョン4以降、フレームワークはテストのマーキングにAnnotationsを使用します。したがって、TestCaseを拡張する必要はなくなりました。しかし、それは、assertメソッドが利用できないことを意味します。ただし、新しいAssertクラスの静的インポートを作成できます。そのため、新しいクラスのすべてのassertメソッドは静的メソッドです。したがって、次の方法でインポートできます。

import static org.junit.Assert.*;

この静的インポートの後、プレフィックスなしでこのメソッドを使用できます。

再設計時に、彼らはまた、パッケージの命名に関する通常の慣習によりよく従う新しいパッケージorg.junitに移動しました。

235
Mnementh

JUnit 3.X:junit.framework.Assert

JUnit 4.X:org.junit.Assert

特にアノテーションをサポートしてJDK5以降を実行している場合は、最新のものを優先してください。

74
ReneS

実際には機能的な変更があります。2つの引数assertEquals()floatまたはdoubleとともに使用すると、org.junit.Assertは文句を言いますが、junit.framework.Assert黙ってオートボックスします。

19
David Moles

junit.frameworkからorg.junitにリファクタリングしており、junit.framework.Assertは後方互換性のために維持されていると思います。

5
sblundy

大まかなソースコードを比較しましたが、重大な変更はありません。 org.junit.Assertに多くのコメントが追加され、いくつかのリファクタリングが行われました。唯一の変更点は、Arraysとの比較です。コードのクリーンアップはいくつかありますが、(imho)機能の変更なしがあります。

3
guerda

Android Studio(およびIntelliJでも同様))では、junit.framework自動インポートプロポーザルから。

IDEまたはProjectの間でスコープを設定できます。 JUnit 3を使用するプロジェクトがない場合は、IDE scope。

設定位置:

設定->エディタ->一般->自動インポート

enter image description here

0
MatPag