262

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

私が参照しているクラスは次のとおりjunit.framework.Assertですorg.junit.Assert

4

6 に答える 6

244

(JUnit 3 の) 古い方法は、 を拡張してテストクラスをマークすることでしたjunit.framework.TestCase。これはそれ自体を継承junit.framework.Assertし、テスト クラスはこの方法で assert メソッドを呼び出すことができるようになりました。

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

import static org.junit.Assert.*;

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

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

于 2008-11-14T19:04:31.107 に答える
77

JUnit 3.X:junit.framework.Assert

JUnit 4.X:org.junit.Assert

特にアノテーションをサポートするJDK5以降を実行している場合は、最新のものをお勧めします。

于 2008-11-14T19:19:07.800 に答える
21

実際には機能的な変更があります:org.junit.Assertは 2 つの引数assertEquals()floatordoubleで使用すると文句を言いますが、junit.framework.Assertは黙って自動ボックス化します。

于 2009-07-31T08:56:47.997 に答える
5

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

于 2008-11-14T19:00:35.857 に答える
2

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

于 2009-05-28T08:56:44.260 に答える