发表于: 2018-04-02 22:02:22

3 588


今天完成的事情
修改maven项目结构
按照师兄的评论,我首先对自己的maven项目结构进行了修改
添加了dao接口
dao接口代码如下
然后把原来的dao实现类继承dao接口,改名为
public class StudentDaoJDBCImpl implements StudentDao
修改了service
后面专门定义了用于junit测试的测试类,把原来的service中的main方法删除了,把service实现类修改如下
直接从StudentServiceImpl使用eclipse抽取出StudentService接口
添加了测试类
配置junit测试框架
junit具体笔记记录到onenote上面了,关键就是使用Assert来判断测试方法输出结果是否符合预期,通过显示绿条还是红条来得到反馈。然后就是在maven中配置使用junit。在eclipse中建立maven项目默认依赖的是junit3版本,要使用注解需要手动修改成junit4版本。所以在pom文件中添加依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
编写测试类
junit要求测试类必须跟被测试类放到同一包中,这样测试类就能访问被测试类的private方法从而进行测试了。如何测试被测试类的private方法呢?网上搜索了一下可以使用反射来强制获取被测试类的private方法对象然后展开测试,暂时用不上所以也就没做练习,以后再说吧,先把眼前的测试写出来。
  • 因为目前自己在service中的方法有几个感觉咱就没有很好的测试思路,所以就仅仅设置测试了其中一个方法
  • 因为自己service实现类中的方法基本都是带传入参数的方法,但junit测试类中的带test后缀的方法都要求是无参函数,经过上网查阅后得知可以定义一个无参测试方法,然后在方法体中调用有参的目标测试方法
  • 实际感觉我的测试方法写的不规范,把两个被测方法放到了一个测试方法里来测试。但就我自己编写的service实现类中的方法来说,自己暂时没想出更合适的测试思路,所以只求先跑完流程,以后再思考这个问题吧。
测试类代码如下,只有一个方法有方法体,剩余2个方法空着
执行测试后结果如下,有方法体的方法是测试成功的。
总体的项目结构
经过一番修改之后,现在感觉项目结构应该符合规范了
执行maven命令
执行mvn的install命令,执行成功,生成如下文件
明天计划的事情
使用MyBatis把前面使用jdbctemplate操作的步骤再进行一遍,以及编写测试类啥的。相信应该会比较好弄,毕竟项目结构啥的只需要模仿着弄一遍即可。
遇到的问题
昨天没有提交日报,因为昨天本来学习时间不多,还卡在了context.getBean( )方法上。在spirng配置文件中添加了<context:component-scan base-package="com.yuuu.service" >之后,建立Spring容器对象contest之后,可以通过其getBean方法获取service实现类对象。getBean方法有多个重载的方法
getBean(注册bean的id字符串)方法
对于使用context:component-scan扫描的类,因为没有手动定义其id属性值,所以其id属性值默认使用其对应的类文件名。对于当前项目来说,获取的service实现类类名是“StudentServiceImpl”,但是在测试类中使用contest.getBean("StudentServiceImpl")却无法获取对应的bean。经过一番查阅最终弄明白,原来在Spring配置文件中添加的bean自定义的id属性值的命名规则是前两个字母要么大写,要么小写(推荐小写)。对于未定义id属性的bean,Spring为其自动生成的id属性值把首字母改成了小写,所以我需要使用contest.getBean("studentServiceImpl")才能正确获取该bean的实例
另一个方式就是getBean((Class<T> requiredType)
使用context.getBean(Class.forName("com.yuuu.service.StudentServiceImpl"); 即可获取目标bean实例。
收获
通过今天学习,完整建立了一个规范的maven项目结构,对于项目层次的划分有了更加深入的认识。也通过实践练习了单元测试的方法,感觉收获还是挺大的。



返回列表 返回列表
评论

    分享到