抽象类中的方法怎么使用mock写测试类
时间: 2023-06-08 12:05:08 浏览: 946
抽象类中的方法无法直接实例化,因此通常需要使用Mockito等测试框架来模拟出一个具体实现,测试抽象类的方法。下面是一个使用Mockito进行抽象类测试的示例代码:
```java
public abstract class AbstractClass {
public abstract String abstractMethod();
}
public class ConcreteClass extends AbstractClass {
@Override
public String abstractMethod() {
return "Concrete implementation";
}
}
public class TestClass {
@Test
public void testAbstractClass() {
AbstractClass mockedClass = Mockito.mock(AbstractClass.class);
Mockito.when(mockedClass.abstractMethod()).thenReturn("Mocked implementation");
assertEquals("Mocked implementation", mockedClass.abstractMethod());
}
@Test
public void testConcreteClass() {
ConcreteClass concreteClass = new ConcreteClass();
assertEquals("Concrete implementation", concreteClass.abstractMethod());
}
}
```
在上面的示例代码中,我们先定义了一个抽象类`AbstractClass`,并在其中定义了一个抽象方法`abstractMethod()`,这个方法没有具体实现。然后我们定义了一个具体类`ConcreteClass`,继承了`AbstractClass`并实现了`abstractMethod()`方法。
接下来,在`TestClass`中,我们使用Mockito框架模拟出了`AbstractClass`类,并且在调用`abstractMethod()`方法时,返回了一个自定义的字符串。我们也实例化了`ConcreteClass`类,并且调用了`abstractMethod()`方法,结果返回了具体实现。
这个示例代码展示了如何使用Mockito框架来测试抽象类中的方法,通过模拟出一个具体实现,并验证其功能和正确性。