私はJavaを初めて使い、JUnitでユニットテストを進めています。テストクラスの開始時に各特定のテストバイス内でオブジェクトを初期化するのが悪い習慣であるのなら、私は不思議でした。例えば:ユニットテスト内での初期化
public class MyTest {
@Test
public void defaultObj() {
Obj d = new Obj();
String name = "";
assertEquals(name, d.getName());
}
再び
public class MyTest {
Obj d = new Obj();
String name = "";
@Test
public void defaultObj() {
assertEquals(name, d.getName());
}
対、私は複数のユニットテストを持っていると仮定すると、私はそれらのひとつひとつの1に
Obj d = new Obj();
を呼び出すことになります。後者がより適切であるかのように感じます。しかし、私はそれぞれのintiailizatonがローカライズされているので、より明示的であると思っていました(右か?)
Obj
に対して複数のコンストラクタを持たなければならないので、最初の私の初期化はスタックし始めます。
ここにベストプラクティスのイディオムはありますか?またはどちらか受け入れ可能ですか?
2番目の例は、すべての単体テスト方法でコンストラクタを呼び出すことを前提としています。 – alayor
@alayorそう、私はそれを何度も何度も馬鹿だと思った。 – datta
また、JUnitがどのように機能するかについての一般的な考え方があれば、Spockを検討することもできます。実際にはJUnitの上で動作しますが、各テストケースごとに自動的にフィールドを再初期化すること(例えば、 'String name = randomName()')を含む多くの構文上の利便性も提供します。 – chrylis