CompanyService の findCompany() メソッドをテストする Test クラスに、次の 4 つのテストを作成しました。
@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);
}
私の理解では、これらのうち最初の 3 つは単体テストです。findCompany() メソッドの動作をテストし、メソッドがさまざまな入力に対してどのように応答するかを確認します。4 番目のテストは、同じクラスに配置されていますが、実際には統合テストのように思えます。後で見つけることができるように、最初に会社をデータベースに追加する必要があります。これにより、外部依存関係 (addCompany() およびデータベース) が導入されます。
私は正しいですか?はいの場合、既存のオブジェクトを見つけるための単体テストをどのように行うべきですか? サービスを「見つける」ためにモックするだけですか?それはテストの意図を殺すと思います。
ここでのガイダンスに感謝します。