2

setUp()オブジェクトの作成をインスタンス変数宣言ではなく内部に置く理由はありますか?

私は本でこのように行われたのを見たことがありますが、効果は同じであり、Junit の以前のバージョンでは各テストのオブジェクトをインスタンス化していなかったため、ベスト プラクティスの理由で行われたかどうかはわかりません (こちらを参照)。 )、またはそれが単なるスタイルの場合。

4

1 に答える 1

3

問題のオブジェクトのインスタンス化が外部要因に依存しない場合は、一度に宣言して定義してもまったく問題ありません。ただし、多くの場合、他の要因 (シングルトン* の初期化など) に依存したり、コンストラクターのパラメーター (テストに依存するものもあります) が必要になったり、初期化に複数の手順が必要になったりします。次に、インスタンス化をセットアップ メソッド、またはテスト メソッド自体に任せる必要があります。

JUnit はテスト クラスの新しいインスタンスを作成することに注意してください。つまり、テスト メソッドの実行ごとにそのデータ メンバーの新しいインスタンスが作成されます。したがって、上記の依存関係がない場合、意味的には、宣言の時点でのメンバーのインスタンス化と setup メソッドでのインスタンス化に違いはありません。

*これがシングルトンが好まれない理由の 1 つです。ただし、多くの場合、特にレガシー コードでは、それらがまだ残っています。

于 2010-07-08T14:48:18.607 に答える