JUnitフレームワークには2つのAssert
クラス(明らかに異なるパッケージ内)が含まれており、それぞれのメソッドは非常に似ているように見えます。これがなぜなのか誰かが説明できますか?
私が言及してるクラスは次のとおりjunit.framework.Assert
とorg.junit.Assert
。
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
、パッケージの命名に関する通常の慣例に従っている新しいパッケージに移動しました。
大まかなソースコードの比較を行いましたが、重大な変更はありません。多くのコメントが追加されorg.junit.Assert
、いくつかのリファクタリングが行われています。唯一の変更点は、との比較Arrays
です。いくつかのコードのクリーンアップがありますが、(私見)機能的な変更はありません。
junit.framework.*
、の静的インポートドロップダウンから除外できますEditor->General->Auto Import->Exclude from Import and Completion
。