抽象类怎么用 @InjectMocks
时间: 2023-07-20 09:07:38 浏览: 123
抽象类是一种不能直接实例化的类,它可以包含抽象方法和非抽象方法。抽象方法只是声明了方法的名称、参数和返回类型,但没有具体的实现,而非抽象方法则有具体的实现。
在Java中使用抽象类时,需要先创建一个子类继承抽象类,并实现抽象方法。然后通过子类实例化对象来调用抽象类中定义的方法。
例如:
```
abstract class Animal {
public abstract void makeSound();
}
class Dog extends Animal {
public void makeSound() {
System.out.println("汪汪汪");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Dog();
animal.makeSound();
}
}
```
在这个例子中,Animal类是一个抽象类,其中定义了一个抽象方法makeSound()。Dog类继承了Animal类,并实现了makeSound()方法。在Main类中,我们创建一个Animal类型的对象animal,并将其实例化为Dog类的实例。然后调用makeSound()方法,输出"汪汪汪"。
@InjectMocks是Mockito框架中的一个注解,用于自动注入被mock的对象。通常在单元测试中使用,可以使得测试代码更加简洁和易读。
举个例子:
```
public class UserServiceTest {
@Mock
private UserDao userDao;
@InjectMocks
private UserService userService;
@Test
public void testGetUserById() {
User user = new User();
user.setId(1L);
user.setName("张三");
Mockito.when(userDao.getUserById(1L)).thenReturn(user);
User result = userService.getUserById(1L);
Assert.assertEquals(user, result);
}
}
```
在这个例子中,我们使用了Mockito框架来模拟userDao对象,并使用@InjectMocks注解来注入userService对象。在testGetUserById()方法中测试了userService的getUserById()方法,并使用Mockito.when()方法来设置当userDao.getUserById()方法被调用时返回一个指定的User对象。最后使用Assert.assertEquals()方法来判断getUserById()方法的返回值是否符合预期。
阅读全文