1.对被spring依赖注入(@Autowired)的属性进行处理
接口:
@Service
public interface Ball {
String playFootBall();
}
实现类:
@Service
public class Football implements Ball {
@Override
public String playFootBall() {
return "love football";
}
}
被测试类
@Service
public class People {
@Autowired
private Ball football;
public String play() {
// return "love football";
return football.playFootBall();
}
}
测试类
// 在使用spy过的实例前,需先调用 :MockitoAnnotations.initMocks(this)
// 或者 使用@SpringBootTest
//@SpringBootTest
class PeopleTest {
// 需要实例化的对象使用 @Spy
@Spy
private Ball football = new Football();
// 在单元测试中,没有启动 spring 框架,此时就需要通过@InjectMocks完成依赖注入。
@InjectMocks
private People people;
@BeforeEach
public void beforeEach() {
/**
* 在使用spy过的实例前,需先调用
* MockitoAnnotations.initMocks(this).《==》@SpringBootTest(等价)
*/
MockitoAnnotations.initMocks(this);
}
@Test
void play() {
// 执行测试
assertEquals(people.play(), "love football");
}
}