Search in sources :

Example 16 with UUIDExceptionWrapper

use of org.jbehave.core.failures.UUIDExceptionWrapper in project jbehave-core by jbehave.

the class StepResultBehaviour method shouldDescribeResultToReporter.

@Test
public void shouldDescribeResultToReporter() {
    // Given
    StoryReporter reporter = mock(StoryReporter.class);
    // When
    String successful = "Given that a step is pending or failing";
    successful(successful).describeTo(reporter);
    String pending = "When a step is performed";
    pending(pending).describeTo(reporter);
    PendingStepFound pendingStepFound = new PendingStepFound(pending);
    pending(pending, pendingStepFound).describeTo(reporter);
    String notPerformed = "Then the step should describe itself properly to reporters";
    notPerformed(notPerformed).describeTo(reporter);
    String ignorable = "!-- Then ignore me";
    ignorable(ignorable).describeTo(reporter);
    String comment = "!-- this is a comment";
    comment(comment).describeTo(reporter);
    String failed = "And any errors should appear at the end of the story";
    UUIDExceptionWrapper cause = new UUIDExceptionWrapper(new IllegalStateException());
    failed(failed, cause).describeTo(reporter);
    String failedOutcomes = "And outcomes failed";
    OutcomesTable outcomesTable = new OutcomesTable();
    failed(failedOutcomes, new UUIDExceptionWrapper(new OutcomesFailed(outcomesTable))).describeTo(reporter);
    skipped().describeTo(reporter);
    // Then
    verify(reporter).successful(successful);
    verify(reporter, times(2)).pending(pending);
    verify(reporter).notPerformed(notPerformed);
    verify(reporter).ignorable(ignorable);
    verify(reporter).comment(comment);
    verify(reporter).failed(failed, cause);
    verify(reporter).failedOutcomes(failedOutcomes, outcomesTable);
}
Also used : StoryReporter(org.jbehave.core.reporters.StoryReporter) OutcomesFailed(org.jbehave.core.model.OutcomesTable.OutcomesFailed) PendingStepFound(org.jbehave.core.failures.PendingStepFound) Matchers.containsString(org.hamcrest.Matchers.containsString) OutcomesTable(org.jbehave.core.model.OutcomesTable) UUIDExceptionWrapper(org.jbehave.core.failures.UUIDExceptionWrapper) Test(org.junit.Test)

Example 17 with UUIDExceptionWrapper

use of org.jbehave.core.failures.UUIDExceptionWrapper in project jbehave-core by jbehave.

the class PrintStreamOutputBehaviour method shouldNotSuppressStackTraceForNotKnownFailure.

@Test
public void shouldNotSuppressStackTraceForNotKnownFailure() {
    // Given
    final OutputStream out = new ByteArrayOutputStream();
    PrintStreamFactory factory = new PrintStreamFactory() {

        public PrintStream createPrintStream() {
            return new PrintStream(out);
        }
    };
    TxtOutput reporter = new TxtOutput(factory.createPrintStream(), new Properties(), new LocalizedKeywords(), true);
    reporter.failed("Then I should have a balance of $30", new UUIDExceptionWrapper(new NullPointerException()));
    reporter.afterScenario();
    assertThat(dos2unix(out.toString()), startsWith("Then I should have a balance of $30 (FAILED)\n" + "(java.lang.NullPointerException)\n" + "\n" + "java.lang.NullPointerException\n" + "\tat "));
}
Also used : LocalizedKeywords(org.jbehave.core.i18n.LocalizedKeywords) Properties(java.util.Properties) UUIDExceptionWrapper(org.jbehave.core.failures.UUIDExceptionWrapper) Test(org.junit.Test)

Example 18 with UUIDExceptionWrapper

use of org.jbehave.core.failures.UUIDExceptionWrapper in project jbehave-core by jbehave.

the class StackTraceFormatterBehaviour method UUIDExecptionShouldBeUnwrapped.

@Test
public void UUIDExecptionShouldBeUnwrapped() {
    StackTraceFormatter formatter = new StackTraceFormatter(false);
    Exception ex = new Exception();
    Exception wrapEx = new UUIDExceptionWrapper(ex);
    String trace = formatter.stackTrace(ex);
    String expected = formatter.stackTrace(wrapEx);
    assertThatTraceIs(trace, expected);
}
Also used : IOException(java.io.IOException) UUIDExceptionWrapper(org.jbehave.core.failures.UUIDExceptionWrapper) Test(org.junit.Test)

Example 19 with UUIDExceptionWrapper

use of org.jbehave.core.failures.UUIDExceptionWrapper in project jbehave-core by jbehave.

the class StoryNarrator method narrateAnInterestingStory.

static void narrateAnInterestingStory(StoryReporter reporter, boolean withFailure) {
    Properties meta = new Properties();
    meta.setProperty("theme", "testing");
    meta.setProperty("author", "Mauro");
    Lifecycle.Steps beforeScenarioSteps = new Lifecycle.Steps(Scope.SCENARIO, asList("Given a scenario step"));
    Lifecycle.Steps beforeStorySteps = new Lifecycle.Steps(Scope.STORY, asList("Given a story step"));
    Lifecycle.Steps afterScenarioSteps = new Lifecycle.Steps(Scope.SCENARIO, asList("Given a scenario step"));
    Lifecycle.Steps afterStorySteps = new Lifecycle.Steps(Scope.STORY, asList("Given a story step"));
    Lifecycle lifecycle = new Lifecycle(asList(beforeScenarioSteps, beforeStorySteps), asList(afterScenarioSteps, afterStorySteps));
    Story story = new Story("/path/to/story", new Description("An interesting story & special chars"), new Meta(meta), new Narrative("renovate my house", "customer", "get a loan"), GivenStories.EMPTY, lifecycle, new ArrayList<Scenario>());
    boolean givenStory = false;
    reporter.beforeStory(story, givenStory);
    reporter.dryRun();
    reporter.narrative(story.getNarrative());
    reporter.lifecyle(lifecycle);
    reporter.beforeScenario(new Scenario("I ask for a loan", Meta.EMPTY));
    reporter.beforeGivenStories();
    reporter.givenStories(asList("/given/story1", "/given/story2"));
    reporter.afterGivenStories();
    reporter.successful("Given I have a balance of $50");
    reporter.ignorable("!-- Then ignore me");
    reporter.comment("!-- A comment");
    reporter.successful("When I request $20");
    reporter.successful("When I ask Liz for a loan of $100");
    reporter.successful("When I ask Liz for a loan of $" + StepCreator.PARAMETER_VALUE_START + "99" + StepCreator.PARAMETER_VALUE_END);
    reporter.successful("When I write special chars <>&\"");
    reporter.successful("When I write special chars in parameter " + StepCreator.PARAMETER_VALUE_START + "<>&\"" + StepCreator.PARAMETER_VALUE_END);
    reporter.successful("When I write two parameters " + StepCreator.PARAMETER_VALUE_START + ",,," + StepCreator.PARAMETER_VALUE_END + " and " + StepCreator.PARAMETER_VALUE_START + "&&&" + StepCreator.PARAMETER_VALUE_END);
    reporter.restarted("Then I should... - try again", new RestartingScenarioFailure("hi"));
    reporter.restartedStory(story, new RestartingStoryFailure("Restarted Story"));
    reporter.storyCancelled(story, new StoryDuration(1).setDurationInSecs(2));
    if (withFailure) {
        reporter.failed("Then I should have a balance of $30", new UUIDExceptionWrapper(new Exception("Expected <30> got <25>")));
    } else {
        reporter.pending("Then I should have a balance of $30");
    }
    reporter.notPerformed("Then I should have $20");
    OutcomesTable outcomesTable = new OutcomesTable(new LocalizedKeywords(), "dd/MM/yyyy");
    outcomesTable.addOutcome("I don't return all", 100.0, equalTo(50.));
    Date actualDate = dateFor("01/01/2011");
    Date expectedDate = dateFor("02/01/2011");
    outcomesTable.addOutcome("A wrong date", actualDate, new IsDateEqual(expectedDate, outcomesTable.getDateFormat()));
    try {
        outcomesTable.verify();
    } catch (UUIDExceptionWrapper e) {
        reporter.failedOutcomes("Then I don't return loan", ((OutcomesFailed) e.getCause()).outcomesTable());
    }
    reporter.afterScenario();
    reporter.beforeScenario(new Scenario("Parametrised Scenario", Meta.EMPTY));
    ExamplesTable table = new ExamplesTable("|money|to|\n|$30|Mauro|\n|$50|Paul|\n");
    reporter.beforeExamples(asList("Given money <money>", "Then I give it to <to>"), table);
    reporter.example(table.getRow(0));
    reporter.successful("Given money $30");
    reporter.successful("Then I give it to Mauro");
    reporter.example(table.getRow(1));
    reporter.successful("Given money $50");
    reporter.successful("Then I give it to Paul");
    if (withFailure) {
        reporter.failed("Then I should have a balance of $30", new UUIDExceptionWrapper(new Exception("Expected <30> got <25>")));
    } else {
        reporter.pending("Then I should have a balance of $30");
    }
    reporter.afterExamples();
    reporter.afterScenario();
    String method1 = "@When(\"something \\\"$param\\\"\")\n" + "@Pending\n" + "public void whenSomething() {\n" + "  // PENDING\n" + "}\n";
    String method2 = "@Then(\"something is <param1>\")\n" + "@Pending\n" + "public void thenSomethingIsParam1() {\n" + "  // PENDING\n" + "}\n";
    reporter.pendingMethods(asList(method1, method2));
    reporter.afterStory(givenStory);
}
Also used : RestartingStoryFailure(org.jbehave.core.failures.RestartingStoryFailure) OutcomesFailed(org.jbehave.core.model.OutcomesTable.OutcomesFailed) LocalizedKeywords(org.jbehave.core.i18n.LocalizedKeywords) Properties(java.util.Properties) ParseException(java.text.ParseException) Date(java.util.Date) RestartingScenarioFailure(org.jbehave.core.failures.RestartingScenarioFailure) UUIDExceptionWrapper(org.jbehave.core.failures.UUIDExceptionWrapper)

Example 20 with UUIDExceptionWrapper

use of org.jbehave.core.failures.UUIDExceptionWrapper in project jbehave-core by jbehave.

the class StoryReporterBuilderBehaviour method shouldBuildWithCustomKeywords.

@Test
public void shouldBuildWithCustomKeywords() throws IOException {
    // Given
    String storyPath = storyPath(MyStory.class);
    Keywords keywords = new LocalizedKeywords(new Locale("it"));
    final OutputStream out = new ByteArrayOutputStream();
    StoryReporterBuilder builder = new StoryReporterBuilder() {

        @Override
        protected FilePrintStreamFactory filePrintStreamFactory(String storyPath) {
            return new FilePrintStreamFactory(new StoryLocation(codeLocation(), storyPath)) {

                @Override
                public PrintStream createPrintStream() {
                    return new PrintStream(out);
                }
            };
        }
    };
    // When
    StoryReporter reporter = builder.withDefaultFormats().withFormats(TXT).withKeywords(keywords).build(storyPath);
    reporter.failed("Dato un passo che fallisce", new UUIDExceptionWrapper(new RuntimeException("ouch")));
    ((ConcurrentStoryReporter) reporter).invokeDelayed();
    // Then
    assertThat(builder.keywords(), equalTo(keywords));
    assertThat(out.toString(), equalTo("Dato un passo che fallisce (FALLITO)\n(java.lang.RuntimeException: ouch)\n"));
}
Also used : Locale(java.util.Locale) PrintStream(java.io.PrintStream) Keywords(org.jbehave.core.configuration.Keywords) LocalizedKeywords(org.jbehave.core.i18n.LocalizedKeywords) ByteArrayOutputStream(java.io.ByteArrayOutputStream) OutputStream(java.io.OutputStream) LocalizedKeywords(org.jbehave.core.i18n.LocalizedKeywords) ByteArrayOutputStream(java.io.ByteArrayOutputStream) StoryLocation(org.jbehave.core.io.StoryLocation) UUIDExceptionWrapper(org.jbehave.core.failures.UUIDExceptionWrapper) Test(org.junit.Test)

Aggregations

UUIDExceptionWrapper (org.jbehave.core.failures.UUIDExceptionWrapper)24 Test (org.junit.Test)18 LocalizedKeywords (org.jbehave.core.i18n.LocalizedKeywords)7 Story (org.jbehave.core.model.Story)7 Properties (java.util.Properties)5 OutcomesTable (org.jbehave.core.model.OutcomesTable)5 OutcomesFailed (org.jbehave.core.model.OutcomesTable.OutcomesFailed)5 ExamplesTable (org.jbehave.core.model.ExamplesTable)4 Meta (org.jbehave.core.model.Meta)4 Scenario (org.jbehave.core.model.Scenario)4 Matchers.containsString (org.hamcrest.Matchers.containsString)3 GivenStories (org.jbehave.core.model.GivenStories)3 InOrder (org.mockito.InOrder)3 Date (java.util.Date)2 HashMap (java.util.HashMap)2 LoadFromClasspath (org.jbehave.core.io.LoadFromClasspath)2 GivenStory (org.jbehave.core.model.GivenStory)2 TableTransformers (org.jbehave.core.model.TableTransformers)2 RegexStepMatcher (org.jbehave.core.parsers.RegexStepMatcher)2 StepMatcher (org.jbehave.core.parsers.StepMatcher)2