springboot mock方式

springboot mock 测试

1,导入依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

2,书写测试类

@SpyBean 代表这个bean对象可以选择需要被mock的方法,在执行测试时userService内注入的就是这个被mockito框架代理过的类。

@MockBean 和@SpyBean 类似,但是@SpyBean没有指明mock的方法将使用原来的方法,而@MockBean 则是将方法全部替换成mock方法。

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {


    @SpyBean
    private UserDao userDao;

    @Autowired
    private UserService userService;


    @Test
    public void getCountWithPowerMock() {
        //先写返回值再调用函数这样用spyBean才不会进入真正的方法
        doReturn(10).when(userDao).getCount();
        int res = userService.getCount();
        assertEquals(10, res);
        assertEquals(10000,userDao.getSum());
    }

}

@Service
public class UserService {

    @Autowired
    private UserDao userDao;

    public int getCount(){
        int res = userDao.getCount();
        return res;
    }
}

@Component
public class UserDao {

    public int getCount(){
        throw new UnsupportedOperationException("dao层抛出异常");
    }

    public int getSum(){return 10000;}
}

你可能感兴趣的:(java)