2012-04-22 5 views
0

메소드 : doctorQueue : 데이터 유형 (java.util.Date), 시간 및 ID (string)의 세 가지 매개 변수를 갖는 메소드가 있습니다.Junit 메소드의 Java-Junit/오해

반환 값은 void이며 이미 같은 시간에 대기열이 있으면 예외가 발생합니다. The method assertTrue(boolean) in the type Assert is not applicable for the arguments (void) :

public void checkQueueDoctor(){ 
Date date = new Date (2012,4,25); 
Time time = new Time (13, 0, 0); 
assertTrue(doctorQueue("83849829", date, time)); 
..... // and so on 
} 

그것은 나에게 다음 문제를 제공합니다 :

나는 Junit와를 사용하여, 다음 방법을 썼다.

나는 그것을 이해하고 있지만 함수를 검사 할 수있는 방법은 반환 값이 무효라는 것인가?

답변

1
public void checkQueueDoctor(){ 
    Date date = new Date (2012,4,25); 
    Time time = new Time (13, 0, 0); 
    doctorQueue("83849829", date, time); 
    ..... // and so on 
} 

이 충분하다. 예외가 발생하면 테스트는 자동으로 실패합니다. 당신의 JUnit 4를 사용하는 경우

0

의사를 추가 한 후 대기열이 변경되었는지 확인하십시오.

0

어떻게 확인할 수 있습니까? 반환 값은 무효입니까?

수 없습니다. 예를 들어 예외가 던져지면 예외가 throw되는지 여부 만 확인할 수 있습니다. 등 나쁜 인수하고 당신이 할 수있는 것은이 방법의 부작용을 확인하는 래퍼 방법을 만들고 true 또는 false을 반환하고 테스트 할 경우 어설

1

에서 해당 전화입니다 Assert.fail()
을 통해 통보 예외가 무효 방법에 의해 발생되지 않도록, 일반적인 패턴은 다음과 같습니다

try { 
    doctorQueue("83849829", date, time); 
    // if we make it to this line, success! 
} catch (Exception e) { 
    fail("queue adding threw an exception"); 
} 

당신은 당신이 예외를 발생 않습니다 방법은, 단지에 실패 전화를 이동하는 것이 확인 할 또 다른 상황이있는 경우 다른 블록 :

try { 
    doctorQueue(alreadyPresentElement, date, time); 
    fail("expected an exception but didn't get one!");  
} catch (Exception e) { 
    // we expected an exception and got it! Success! 
} 

는 (어느 경우가 그런데, 단지 Exception보다 더 구체적인 예외를 잡기 위해 아마 더 낫다.)

+1

볼 수 있습니다 방법, 그냥 메서드를 호출합니다. try ... catch 메서드를 호출하면 원래 예외가 숨겨집니다. – NamshubWriter

1

, 당신은 예를 들어, 예상되는 예외를 확인할 수 있습니다

@Test(expected = Exception.class) 
public void checkQueueDoctor() throws Exception { 
    Date date = new Date (2012,4,25); 
    Time time = new Time (13, 0, 0); 
    doctorQueue("83849829", date, time); 
} 

당신이 예외가 발생되지 않도록 테스트하려면 당신이 link

+1

예외가 throw되지 않는 경우 테스트하는 방법을 생각합니다. 예외를 테스트하기위한 예제가 포스터가 테스트하려는 다른 시나리오에 유용하다고 확신합니다. –

관련 문제