Java单元测试

2023-02-19  本文已影响0人  Tinyspot

1. 单元测试框架Junit

1.2 @Before, @Test, @After

1.3 断言方法

Assert.assertEquals(expected, actual);
Assert.assertTrue(condition);
Assert.assertNotNull(object);
Assert.assertArrayEquals(expecteds, actuals);

2. 测试套件

@RunWith(Suite.class)
@Suite.SuiteClasses({
        xxx.class,
        xxx.class
})
public class AllTests {

}

3. 使用Mock对象

3.1 模拟测试框架 Mockito

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>4.7.0</version>
    <scope>test</scope>
</dependency>

3. 处理遗留代码

public class Account {
    public void transfer() {
        TransactionManager txManager = new TransactionManagerImpl();
        txManager.begin();
        // ...
        txManager.commit();
    }
}
// 重构 Refactor -> Extract Method
public class Account {
    public void transfer() {
        TransactionManager txManager = getTxManager();
        // ...
    }
    private TransactionManagerImpl getTxManager() {
        return new TransactionManagerImpl();
    }
}
// 测试之前,创建一个子类,重写 getTxManager() 来提供一个 Mock 实现
Account account = new Account() {
    @Override
    protected TransactionManagerImpl getTxManager() {
        return new MockTransactionManager();
    }
};
account.transfer();

4. TDD

上一篇 下一篇

猜你喜欢

热点阅读