StepFailureDecorator.java
package org.jbehave.core.reporters;
import org.jbehave.core.failures.StepFailed;
import org.jbehave.core.failures.UUIDExceptionWrapper;
import org.jbehave.core.model.OutcomesTable;
import org.jbehave.core.model.Story;
/**
* <p>
* When a step fails, the {@link Throwable} that caused the failure is wrapped
* in a {@link StepFailed} together with the step during which the failure
* occurred. If such a failure occurs it will throw the {@link StepFailed}
* after the story is finished.
* </p>
*
* @see StepFailed
*/
public class StepFailureDecorator extends DelegatingStoryReporter {
private UUIDExceptionWrapper failure;
public StepFailureDecorator(StoryReporter delegate) {
super(delegate);
}
@Override
public void afterStory(boolean givenStory) {
super.afterStory(givenStory);
if (failure != null) {
throw failure;
}
}
@Override
public void beforeStory(Story story, boolean givenStory) {
failure = null;
super.beforeStory(story, givenStory);
}
@Override
public void failed(String step, Throwable cause) {
failure = (UUIDExceptionWrapper) cause;
super.failed(step, failure);
}
@Override
public void failedOutcomes(String step, OutcomesTable table) {
failure = new StepFailed(step, table);
super.failedOutcomes(step, table);
}
}