场景:
有一个service类下面自动注入了dao层,现在需要测试servic类,测试2中方法。
servier方法定义
接口
public interface ADao {
A getA(long id);
}
服务接口
public interface AService {
A getA(long id);
}
服务实现
public class AServiceimpl implements AService{
@Autowired
private ADao adao;
public A getA(long id){
return adao.getA(id);
}
}
方法1
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = AppConfig.class)
public class AServiceImplTest {
@Autowired
private AServiceImpl aService;
@Capturing
private ADao aDao;
@Test
public void createExam() {
A a = A.builder().id(1L).build();
new Expectations() {
{
aDao.getA(1);
result = a;
}
};
aService.createA(null);
System.out.println();
}
}
方法2
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = AppConfig.class)
public class AServiceImplTest {
@Tested
private AServiceImpl aService;
@Injectable
private ADao aDao;
@Test
public void createExam() {
A a = A.builder().id(1L).build();
new Expectations() {
{
aDao.getA(1);
result = a;
}
};
aService.createA(null);
System.out.println();
}
}
方法1和方法2的区别是方法1通过@Capturing注解来模拟所有子类的方法,方法2是通过@tested和@Injectable类来模拟对象
版权声明:本文为liu306487103原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。