单元测试JUnit-简单笔记

1.JUnit的各种断言:

    assertEquals([String message], expected, actual)
    用得最多的断言形式。message参数可以选。

    assertNull([String message], java.lang.Object object)
    assertNotNull([String message], java.lang.Object object)
    验证一个给定的对象是否为null。message参数可以选。

    assertSame([String message], expected, actual)
    assertNotSame([String message], expected, actual)
    验证expected参数和actual参数所引用的,是否为同一个对象。message参数可以选。

    assertTrue([String message], boolean condition)
    assertFalse([String message], boolean condition)
    验证给定的二元条件是否为真。message参数可以选。

    fail([String message])

    这个断言将会使测试立即失败。message参数可以选。




2.当一个断言失败的时候,该测试方法将会被中止。

    当有测试失败的时候,无论如何都不能给原有代码再添加新的特性,此时应该尽快修复这个错误,直到让所有的测试顺利通过。




3.代码的执行顺序:

    oneTimeSetUp()
        setUp()
            testMethod1()
            tearDown()
        setUp()
    testMethod2()
    tearDown()
    oneTimeTearDown()

    假设对于每个测试,你都需要某种数据库连接。这时,你就不需要在每个测试方法中重复建立和释放连接了。
    而只需要在setUp和tearDown方法中分别建立和释放连接:
  
public class TestDB extends TestCase{
        private Connection dbConn;

        protected void setUp(){
        dbConn = new Connection("oracle", 1521, "liam", "huang");
        dbConn.connect();
    }

    protected void tearDown(){
        dbConn.disconnect();
        dbConn = null;
    }

    public void testAccountAccess(){
        //uses dbConn
    }

    public void testEmployeeAccess(){
        //uses dbConn
    }

    }






4.测试那些内容:

Right-BICEP
    Right-结果是否正确
    B-是否所有的边界条件都是正确的
    I-能查一下反向关联吗
    C-能用其他手段交叉检查一下结果吗
    E-你是否可以强制错误条件发送
    P-是否满足性能要求




5.CORRECT边界条件:

    Conformance-一致性 值是否符合预期的格式
    Ordering-有序性 组值是该有序的,还是该无序的
    Range-区间性 值是否在一个合理的最大值和最小值的范围内
    Reference-耦合性 代码是否引用了一些不受代码本身直接控制的外部因素
    Existence-存在性 值是否存在
    Cardinality-基数性 是否恰好有足够的值
    Time-时间性 所有事情是否都是按顺序发生的,是否在正确的时间,是否及时




6.Mock对象:

    在单元测试中我们也要使用类似于电影中灯光替身一类的替代品。
    一种和真品非常接近的赝品,至少表面上看来是这样,但是就我们测试的目的而言它更加好用。
    Mock对象,也就是真实对象在调试期的替代品。
    在使用mock对象进行测试的时候,总共有3个关键步骤:
        1)使用一个接口来描述这个对象
        2)为产品代码实现这个接口
        3)以测试为目的,在mock对象中实现这个接口
    Mock伪装出真实世界的某些部分,使你可以集中精力测试好自己编写的代码。




7.好的测试品质:

    A-TRIP
        Automatic 自动化
        Thorough 彻底的
        Repeatable 可重复
        Independent 独立的

      Professional 专业的




你可能感兴趣的:(单元测试JUnit-简单笔记)