局部做了调整，使用hamcrest和mockito重写了单元测试