私があなたを正しく理解していれば、あなたはモックされたコンストラクターでクラスをテストしたいと考えています。本番コードを最も純粋な形でテストしていないため、これはテストの良いアプローチではありません。
とはいえ、すべてがルール通りに進むわけではありませんよね?:) したがって、あなたが主張するなら、JMockIt はあなたにそれをさせてくれます。コンストラクターだけをモックアウトして、他のメソッドをテストできます。モックコンストラクターについては、JMockIt プロジェクト サイトで詳しく説明されています。
以下は、自分で試すことができる簡単なデモンストレーションです。
生産コード:
// src/main/java/pkg/SomeClass.java
public class SomeClass {
public static void main(String[] args) {
new SomeClass("a", 2);
}
public SomeClass(String a, Integer b) {
System.out.println("Production constructor called");
}
}
モックコード:
// src/test/java/pkg/SomeMock.java
import mockit.Mock;
import mockit.MockUp;
public class SomeMock extends MockUp<SomeClass> {
@Mock
public void $init(String a, Integer b) {
System.out.println("Mock constructor called");
}
}
テストコード:
// srce/test/java/pkg/SomeTest.java
import org.junit.Test;
public class SomeTest {
@Test
public void test() {
new SomeMock();
new SomeClass("a", 2);
}
}
本番コードをProduction constructor called
実行すると が出力されますが、テスト中に実行すると が出力されますMock constructor called
。