/** * Create an instance of {@link TestResult } * */ public TestResult createTestResult() { return new TestResult(); }
private void convert(final Supplier<String> uidGenerator, final Path resultsDirectory, final ResultsVisitor visitor, final List<TestResultContainer> groups, final TestResult result) { final io.qameta.allure.entity.TestResult dest = new io.qameta.allure.entity.TestResult(); dest.setUid(uidGenerator.get()); dest.setHistoryId(result.getHistoryId()); dest.setFullName(result.getFullName()); dest.setName(firstNonNull(result.getName(), result.getFullName(), "Unknown test")); dest.setTime(Time.create(result.getStart(), result.getStop())); dest.setDescription(result.getDescription()); dest.setDescriptionHtml(result.getDescriptionHtml()); dest.setStatus(convert(result.getStatus())); Optional.ofNullable(result.getStatusDetails()).ifPresent(details -> { dest.setStatusMessage(details.getMessage()); dest.setStatusTrace(details.getTrace()); }); dest.setLinks(convert(result.getLinks(), this::convert)); dest.setLabels(convert(result.getLabels(), this::convert)); dest.setParameters(getParameters(result)); dest.addLabelIfNotExists(RESULT_FORMAT, ALLURE2_RESULTS_FORMAT); if (hasTestStage(result)) { dest.setTestStage(getTestStage(resultsDirectory, visitor, result)); } final List<TestResultContainer> parents = findAllParents(groups, result.getUuid(), new HashSet<>()); dest.getBeforeStages().addAll(getStages(parents, fixture -> getBefore(resultsDirectory, visitor, fixture))); dest.getAfterStages().addAll(getStages(parents, fixture -> getAfter(resultsDirectory, visitor, fixture))); visitor.visitTestResult(dest); }
@Override public TestResult withDescription(String value) { setDescription(value); return this; }
@Override public void startOfScenarioLifeCycle(final Scenario scenario) { this.currentScenario = scenario; final Deque<Tag> tags = new LinkedList<>(scenario.getTags()); if (SCENARIO_OUTLINE_KEYWORDS.contains(scenario.getKeyword())) { synchronized (gherkinSteps) { gherkinSteps.clear(); } } else { tags.addAll(currentFeature.getTags()); } final LabelBuilder labelBuilder = new LabelBuilder(currentFeature, scenario, tags); final String uuid = UUID.randomUUID().toString(); scenarioUuids.put(scenario, uuid); final TestResult result = new TestResult() .setUuid(uuid) .setHistoryId(StepUtils.getHistoryId(scenario.getId())) .setFullName(String.format("%s: %s", currentFeature.getName(), scenario.getName())) .setName(scenario.getName()) .setLabels(labelBuilder.getScenarioLabels()) .setLinks(labelBuilder.getScenarioLinks()); if (!currentFeature.getDescription().isEmpty()) { result.setDescription(currentFeature.getDescription()); } lifecycle.scheduleTestCase(result); lifecycle.startTestCase(uuid); }
private TestResult createTestResult(final String uuid, final Description description) { final String className = description.getClassName(); final String methodName = description.getMethodName(); final String name = Objects.nonNull(methodName) ? methodName : className; final String fullName = Objects.nonNull(methodName) ? String.format("%s.%s", className, methodName) : className; final String suite = Optional.ofNullable(description.getTestClass()) .map(it -> it.getAnnotation(DisplayName.class)) .map(DisplayName::value).orElse(className); final TestResult testResult = new TestResult() .setUuid(uuid) .setHistoryId(getHistoryId(description)) .setFullName(fullName) .setName(name); testResult.getLabels().addAll(getProvidedLabels()); testResult.getLabels().addAll(Arrays.asList( createPackageLabel(getPackage(description.getTestClass())), createTestClassLabel(className), createTestMethodLabel(name), createSuiteLabel(suite), createHostLabel(), createThreadLabel(), createFrameworkLabel("junit4"), createLanguageLabel("java") )); testResult.getLabels().addAll(getLabels(description)); testResult.getLinks().addAll(getLinks(description)); getDisplayName(description).ifPresent(testResult::setName); getDescription(description).ifPresent(testResult::setDescription); return testResult; }
@Override public void testAssumptionFailure(final Failure failure) { final String uuid = testCases.get(); getLifecycle().updateTestCase(uuid, testResult -> testResult.setStatus(Status.SKIPPED) .setStatusDetails(getStatusDetails(failure.getException()).orElse(null)) ); }
@Override public void testIgnored(final Description description) { final String uuid = testCases.get(); testCases.remove(); final TestResult result = createTestResult(uuid, description); result.setStatus(Status.SKIPPED); result.setStatusDetails(getIgnoredMessage(description)); result.setStart(System.currentTimeMillis()); getLifecycle().scheduleTestCase(result); getLifecycle().stopTestCase(uuid); getLifecycle().writeTestCase(uuid); }
public TestResult withLinks(Link... values) { if (values!= null) { for (Link value: values) { getLinks().add(value); } } return this; }
public TestResult withLabels(Label... values) { if (values!= null) { for (Label value: values) { getLabels().add(value); } } return this; }
public static TestResult randomTestResult() throws IOException { long start = randomStart(); return new TestResult() .withName(randomTestResultName()) .withStart(start) .withStop(start + randomDuration()); }
@Override public void testFinished(final Description description) { final String uuid = testCases.get(); testCases.remove(); getLifecycle().updateTestCase(uuid, testResult -> { if (Objects.isNull(testResult.getStatus())) { testResult.setStatus(Status.PASSED); } }); getLifecycle().stopTestCase(uuid); getLifecycle().writeTestCase(uuid); }
public TestResult withUuid(String value) { setUuid(value); return this; }
public TestResult withHistoryId(String value) { setHistoryId(value); return this; }
@Override public TestResult withStatus(Status value) { setStatus(value); return this; }
public TestResult withFullName(String value) { setFullName(value); return this; }
@Override public TestResult withName(String value) { setName(value); return this; }
@Override public TestResult withStatusDetails(StatusDetails value) { setStatusDetails(value); return this; }
private void handleTestCaseStarted(final TestCaseStarted event) { currentFeatureFile = event.testCase.getUri(); currentFeature = cucumberSourceUtils.getFeature(currentFeatureFile); currentTestCase = event.testCase; final Deque<PickleTag> tags = new LinkedList<>(event.testCase.getTags()); final LabelBuilder labelBuilder = new LabelBuilder(currentFeature, event.testCase, tags); final String name = event.testCase.getName(); final String featureName = currentFeature.getName(); final TestResult result = new TestResult() .setUuid(getTestCaseUuid(event.testCase)) .setHistoryId(getHistoryId(event.testCase)) .setFullName(String.format("%s: %s", featureName, name)) .setName(name) .setLabels(labelBuilder.getScenarioLabels()) .setLinks(labelBuilder.getScenarioLinks()); final ScenarioDefinition scenarioDefinition = cucumberSourceUtils.getScenarioDefinition(currentFeatureFile, currentTestCase.getLine()); if (scenarioDefinition instanceof ScenarioOutline) { result.setParameters( getExamplesAsParameters((ScenarioOutline) scenarioDefinition) ); } if (currentFeature.getDescription() != null && !currentFeature.getDescription().isEmpty()) { result.setDescription(currentFeature.getDescription()); } lifecycle.scheduleTestCase(result); lifecycle.startTestCase(getTestCaseUuid(event.testCase)); }
@Override public void testFailure(final Failure failure) { final String uuid = testCases.get(); getLifecycle().updateTestCase(uuid, testResult -> testResult .setStatus(getStatus(failure.getException()).orElse(null)) .setStatusDetails(getStatusDetails(failure.getException()).orElse(null)) ); }
public TestResult withLinks(Collection<Link> values) { if (values!= null) { getLinks().addAll(values); } return this; }