我在Test類中創建了以下四個測試,測試CompanyService的findCompany()方法。單元測試和集成測試示例
@Test
public void findCompany_CompanyIdIsZero() {
exception.expect(IllegalArgumentException.class);
companyService.findCompany(0);
}
@Test
public void findCompany_CompanyIdIsNegative() {
exception.expect(IllegalArgumentException.class);
companyService.findCompany(-100);
}
@Test
public void findCompany_CompanyIdDoesntExistInDatabase() {
Company storedCompany = companyService.findCompany(100000);
assertNull(storedCompany1);
}
@Test
public void findCompany_CompanyIdExistsInDatabase() {
Company company = new Company("FAL", "Falahaar");
companyService.addCompany(company);
Company storedCompany1 = companyService.findCompany(company.getId());
assertNotNull(storedCompany1);
}
我的理解是,前三個是單元測試。他們測試findCompany()方法的行爲,檢查方法如何響應不同的輸入。 第四個測試,雖然放在同一個班,但實際上似乎對我來說是一個綜合測試。它要求首先將公司添加到數據庫中,以便稍後可以找到它。這引入了外部依賴項 - addCompany()和數據庫。
我正確嗎?如果是,那麼我應該如何進行單元測試以查找現有對象?只是嘲笑服務「找」一個?我認爲這會殺死測試的意圖。
我很欣賞這裏的任何指導。
嘛。底層服務(數據庫調用)僅僅是Hibernate單線調用,肯定不會包含任何錯誤。所以,我猜我在做什麼是沒問題的。 – 2013-02-28 06:55:01