完善测试,重构代码