单元测试是否应该连接数据库进行?
是:
1.不连接数据库就无法测试进行数据库操作的代码是否正确,很多函数会失去测试意义。
2.不用模拟从数据库中取出的对象,直接从数据库取出真实对象。
否:
1.单元测试不该依赖所测代码以外的东西,数据库返回不可靠。
2.不用模拟数据库操作时数据库中的相关数据.
总结:
1.连接可控的测试数据库,里面的数据一直和预期一致,保证测试结果不会受数据库数据影响。
2.在测试数据库中准备好常用测试数据,不用每次测试重复插入常用测试数据。
私有方法是否需要单元测试?
是:
1.调用多个私有方法的公有方法不是只做一件事,而是做一系列关系紧密的事,只测试公有方法增大了单元测试的粒度。测试私有方法使单元测试更细致,可以在开发中更早发现问题,更精准定位问题。
否:
1.不用为每个私有方法准备需要的测试环境。
2.不用测试实现过程(与最终结果不直接相关的数据)。
总结:
无法被复用,不直接和结果有关的代码属于实现过程,可以不被测试。其执行结果只会被同一类中的公有方法调用,它的作用只是为得出公有方法的结果服务,公有方法的结果必然需要被测试。
单元测试相对其它测试的优点:1.让开发者更早发现问题2.避免公有方法被修改后影响调用此方法的地方。
单元测试的目的就是及早发现问题,如果颗粒过大,发现问题时影响代码过多,可能已经较难更正。