私はテストについて学びたいですが、抽象クラスをテストしながらいくつかの問題に直面しています。私は、ConcreteDogのようにDogから継承する具体的なサブクラスを作成できることは知っていますが、Dogに新しい抽象メソッドを追加すると、空のメソッドをConcreteDogに追加する必要があります。それは私が推測するほどクールではないだろう。コンストラクタの引数を持つ抽象クラスをテストする
public abstract class Dog {
private final int id;
public Dog(int id) {
this.id = id;
}
public int getId() {
return id;
}
public abstract void makeSound();
}
...
public class DogTest {
@Test
public void testGetId() {
int id = 42;
// How to pass id to Dog constructor ?
Dog dog = Mockito.mock(Dog.class, Mockito.CALL_REAL_METHODS);
assertTrue(dog.getId() == id);
}
}
私はそれがmockitoで可能かどうかはわからない
Mockito.mock(Dog(id).class, Mockito.CALL_REAL_METHODS);
のように、何とかコンストラクタでモックを呼び出しているやろうとしているが、ことを行うための方法がありますmockitoや別のツールを使用していますか?