单元测试笔记

1. 单元测试
     不:
         1. 不测试输入输出相关的代码,比如数据库操作、文件操作、网络IO等
         2. 不需要上下文。仅测最小可执行单元的逻辑
         3. 不是冒烟测试或者功能测试。
         4. 不依赖于环境。不需提前准备程序运行环境,如数据库等,仅需基本程序编译运行环境及框架支持。
         (上述测试也是重要并不可或缺的)
        
     是:对程序中最小可执行单元进行独立测试
    
2. 不要用Main函数测试你的程序,因为:
     a. 不可复用
     b. 不方便维护。测试完后如何处理Main?
     c. 需要测试的代码较多时,不能自动化,结果不够直观
    
3. 最佳实践:
     a. 三部曲:Arrange,Act,Assert -- 准备数据,执行测试,断言
     b. 一个测试方法一个断言 -- 多个断言,测试失败,到底是哪个断言失败?
     c. 保持多个测试方法间的独立 -- 依赖导致失败传递
     d. 不要将看似公用的测试方法抽象成抽象类 -- 保持“单元”的纯粹性
     e. 以单元测试促进你的设计 -- 当准备数据变得很复杂,当测试代码变得很难写,回头重新检查你的代码设计
     f. 将单元测试加入持续集成
     g. 保证测试代码和实际代码包路径相同 -- 方便测试package-private方法/快速定位测试代码
     h. 不要在单元测试代码中打印任何内容 -- 没用
     i. 不要通过构造函数初始化测试用例,使用@Before
     j. 异常的测试 -- 使用并慎用expected @Test(expected = IndexOutOfBoundsException.class)
     k. 不要试图通过A类对B类进行单元测试 -- A类的变换可能导致测试的失效
     l. 使用带String参数的assert方法,清晰表明测试案例失败的原因,快速定位
        
    

posted @ 2018-08-19 19:35  luojiahu  阅读(159)  评论(0编辑  收藏  举报