程序人生——“无损”单元测试
2017-03-02 本文已影响0人
修行想飞的鱼
很多程序员对单元测试又爱又恨,爱的是可以大幅提高你代码的质量、可读性和后期维护的成本,总之好处说不完;恨的是它会大幅占用你原本就捉襟见肘的开发时间,让你看起来效率不高,嗯,也只是看起来而已。如果是对原有代码添加单元测试,那可真是一件让人头痛的事情。废话不多说,今天遇到一件棘手的问题,是对既有代码添加单元测试,限制很多,因为这是安全相关代码,是通过了安全认证的,所以想动源代码是不可能的;再就是,作为工程的一部分,单元测试代码要放到固定的测试项目中去,方便执行自动化测试。
这些限制带来一个问题,就是internal的属性和方法我测不到啊!
不能打桩,还测个屁啊!
话虽如此,但是问题还得解决,它不会因为你的抓狂而自动解决。原来的程序已C#代码完成的,后来灵机一动。我想到可以使用.Net中的反射来解决这个问题。
大概思路是,使用反射重建一个辅助测试的助手类,在单元测试的项目中重新暴露被测模块的internal属性和方法。再测试这个助手类。
这只是我自己想出来的方法,自己试了效果还是不错的。如果有更好的办法,欢迎交流。