使用构造函数上的参数测试抽象类
我正在尝试学习测试,但在测试抽象类时遇到了一些问题。我知道我可以创建一个从Dog继承的具体子类,就像ConcreteDog一样,但是如果我向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);
}
}
我试图做的是以某种方式用构造函数调用Mock,比如
Mockito.mock(Dog(id).class, Mockito.CALL_REAL_METHODS);
我不知道使用mockito是否可行,但是有一种方法可以使用mockito或其他工具来做到这一点?