2013-08-30 3 views
1

DrJava를 사용하여 Java로 시작합니다. 학습을 위해 TDD를 따르고 있습니다. 일부 데이터의 유효성을 검사하고 유효하지 않은 데이터를 가정하는 메서드를 만들 때이 메서드는 예외를 throw한다고 가정합니다.DrJava에서 예외를 테스트하는 방법은 무엇입니까?

예상대로 예외가 발생합니다. 그러나 나는 단위 테스트를 작성하여 예외를 기대하는 방법을 잘 모릅니다.

.net 우리는 ExpectedException(typeof(exception))입니다. 누군가가 DrJava에서 동등한 것을 가리킬 수 있습니까? 당신의 JUnit을 사용하는 경우

@Test(expected = ExpectedException.class) 
public void testMethod() { 
    ... 
} 

을 할 수

감사

+0

당신이 {해봐요을 (시도'과 같은 작업을 수행 할 수 있습니다, 당신은 DrJava –

답변

2

은 자세한 내용은 API에서보세요.

+0

를 사용하는 데 필요한 그리고 이전 버전의 JUnit에 있습니까) : 일부 예상 값 또는 약간의 기대 값을 포함 ;} catch (ExpectedException e) {}' –

+1

OP가 Java로 시작되었으므로 최첨단 사례를 배울 수 있습니다. 어쨌든 곧 구식이 될 수 있습니다. – adarshr

0

특정 예외 유형이 테스트 메소드의 어딘가에 던져 졌다는 사실을 테스트하기 만하면 이미 표시된 @Test(expected = MyExpectedException.class)이 좋습니다.

더 고급 테스트 예외를 테스트하기 위해 @Rule을 사용하여 예외가 발생할 예상 영역을 세부적으로 구체화하거나 Throw 된 예외 오브젝트에 대한 추가 테스트를 추가 할 수 있습니다 (즉, 메시지 문자열이 같음 ? (​​"예외를 기대") 실패

class MyTest { 

    @Rule ExpectedException expected = ExpectedException.none(); 
    // above says that for the majority of tests, you *don't* expect an exception 

    @Test 
    public testSomeMethod() { 
    myInstance.doSomePreparationStuff(); 
    ... 
    // all exceptions thrown up to this point will cause the test to fail 

    expected.expect(MyExpectedClass.class); 
    // above changes the expectation from default of no-exception to the provided exception 

    expected.expectMessage("some expected value as substring of the exception's message"); 
    // furthermore, the message must contain the provided text 

    myInstance.doMethodThatThrowsException(); 
    // if test exits without meeting the above expectations, then the test will fail with the appropriate message 
    } 

} 
관련 문제