테스트 중심 디자인 개념을 사용하여 스택 클래스를 작성하고 있습니다. 설정() 메소드에서테스트 구동 디자인 개념을 사용하여 예외를 테스트하려면 어떻게해야합니까?
나의 스택이
Stack stack = new Stack();
같은 0 요소 생성이 최고 즉시 설정이 완료되면 호출 될 때 제기 될 것 StackEmptyException를 잡으려고 내 시도 테스트입니다().
@Test
public final void testTopIsEmpty() throws StackEmptyException
{
StackEmptyException thrown = null;
try
{
stack.top();
}
catch (StackEmptyException caught)
{
thrown = caught;
}
assertThat(thrown, is(instanceOf(StackEmptyException.class)));
}
내 마지막 문제입니다. 왜 내 코드가 작동하지 않는지 이해할 수 없다!
큰 테스트 (둘 이상의 명령문 사용)에서 예외가 발생했기 때문에이 테스트는 예외에 대한 테스트 방법을 싫어합니다. 내 논리로 throw/catch 블록을 사용하여 예외가 제기 된 곳을 명시 적으로 학습합니다. 다른 대답을 기다리는 동안 이해해주십시오. –
Ok,'assertTrue (throw 된 instanceOf StackEmptyException.class)'를 사용하고 던져진 타입을'Exception'으로 변경하십시오. 네가 그것을 실행할 때 어떻게 될까? – Adam
@DannyRancher 당신은 아마 그 큰 테스트를해서는 안됩니다. 어쩌면 특정 유스 케이스를 테스트하는 방법을 묻는 새로운 질문을 할 수 있습니다. – millimoose