2012-05-24 3 views
0

내가 JMock을 사용하여 몇 가지 검사를 쓰기를 시도하고 다음과 같은 코드가 추가됩니다 다음과 같이JMock 이상한 시도/캐치 절

이제
db = context.mock(DBResultQueryExecutor.class); 
context.checking(new Expectations() {{ 
    oneOf (db).prepareQuery(query); 
    will(throwException(new QueryException("Test"))); 
}}); 

, 내 DBResultQueryExecutor가 정의 :

public interface DBResultQueryExecutor{ 
... 
void executeQuery() throws QueryException; //This is a checked exception 
... } 

JMock에서는 메소드가 미래의 어떤 시점에서 정확히 한 번 호출 될 것이라고 지정하려고합니다. Eclipse가 예상 설정 내에서 처리되지 않은 예외에 대해 불평한다는 사실을 제외하고는 괜찮습니다. 나는 그것이 나중에 던져 질 것이라는 것을 안다. 그리고 나는 기대 내에서 어떤 사업상의 점검도하지 않는다.

나는 여기서 끔찍한 잘못을 저질렀나요? 아니면이 상황에 대한 간단한 해결책이 있습니까? 감사.

답변

3

방금이 문제에 대해 동료로부터 큰 도움을 받았습니다. 솔루션은 테스트 메소드 설명자에 "throws Exception"을 추가하는 것이 었습니다. 그 설명은 여전히 ​​나에게는 분명하지 않지만, 'Java가 당신이 Expectations {} 블록에서 실제로이 메소드를 호출하지 않는다는 것을 모르고 있습니다. Java가 알아야 할 것으로 보입니다. 그러나 그렇지 않습니다.

저는 도움이되기를 바랍니다. 저는 이클립스가 틀렸다고 확신했습니다.

+0

가 추가되었지만 이상하게 보입니다. – Bober02