EasyMock을 사용하여 junit 테스트 케이스를 만들고 있습니다. 지금까지는 POJO를 반환 할 것으로 기대되는 클래스에 대해서는 의미가 있지만, 그 자체로 예외를 던질 수있는 DAO 객체를 다루는 방법은 무엇입니까? 내 테스트 케이스는 DAO가 문제를 발견했을 때 발생하는 예상 된 예외를 검사하는 것이다. EasyMock 사용하기 나는 DAO 객체 (foo
클래스에서 테스트)를 시도하고 저격 DAO 예외를 처리하는 올바른 방법은 무엇인가?EasyMock Exception Handling
클래스/간단한 전화의 예는 다음과 같습니다 : 나는 할 수 있도록하려면 내가하려고하면
public class foo{
private daoClass dao = daoClass.getInstance();
public String getValueFromDB(String key) throws DBException{
return dao.lookup(key);
}
}
public class daoClass{ //singleton DAO
public daoClass getInstance(){
//singleton access here
}
public String lookup(String key) throws DBException{
try{
//DB LOGIC
}
catch(Exception e){
throw new DBException(e.getMessage());
}
}
}
(모든 게터/세터/생성자가 유효하고 존재 가정)과 foo
클래스를 테스트 이 DBException을 테스트하십시오. 내가 이것을 어떻게 처리합니까? DAO 호출을 테스트/캐치 (테스트)에서 suronding해야합니까? 아니면 테스트에 throw를 추가할까요? 나는 그것이 던져지면 expected=DBException
이 테스트를 통과한다는 것을 안다.하지만 내부적으로 예외를 몇 개 처리해야 하는가?
테스트 코드의 예 :
@Test(expected=DBException.class)
public void testFooError(){
String key = "test";
String value = "expected";
daoClass daoMock = createMock(daoClass.class);
try{
expect(daoMock.lookup(key)).andReturn(value);
} catch (DBException e){
// ???
}
}
expect
잠재적 오류를 던질 수있을 때 처리하는 올바른 방법은 무엇입니까? 테스트 방법 throw
을 예외로 사용하거나 try/catch
을 사용해야합니까? 테스트에서 expected=EXCEPTION
태그를 사용하는 것이 맞습니까?
그래서 (예외가 예상되는) 하단 케이스가 있으므로 ('expected = Exception.class ') 그 경우에는 중단해야합니다? – Walls
예,이 경우에 입력 할 필요가 없습니다. – combinatorics
'exceptionThrown' 로직에 대한 빠른 설명 ...EasyMock 객체에 대한'expect' 호출을 중심으로이 예외를 기대하고 싶습니다. 아니면 실제로 모의 객체를 사용하고 catch를 시작하려고 할 때 테스트 코드에서 그 논리를 사용해야합니다. try {expect()} catch {DO NOTHING} ... ' 'try {foo.getValueFromDB (value)} catch (예외 e) {exceptionThrown = true;}' – Walls