All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.junit.platform.engine.TestExecutionResult Maven / Gradle / Ivy

/*
 * Copyright 2015-2020 the original author or authors.
 *
 * All rights reserved. This program and the accompanying materials are
 * made available under the terms of the Eclipse Public License v2.0 which
 * accompanies this distribution and is available at
 *
 * https://www.eclipse.org/legal/epl-v20.html
 */

package org.junit.platform.engine;

import static org.apiguardian.api.API.Status.STABLE;
import static org.junit.platform.engine.TestExecutionResult.Status.ABORTED;
import static org.junit.platform.engine.TestExecutionResult.Status.FAILED;
import static org.junit.platform.engine.TestExecutionResult.Status.SUCCESSFUL;

import java.util.Optional;

import org.apiguardian.api.API;
import org.junit.platform.commons.util.Preconditions;
import org.junit.platform.commons.util.ToStringBuilder;

/**
 * {@code TestExecutionResult} encapsulates the result of executing a single test
 * or container.
 *
 * 

A {@code TestExecutionResult} consists of a mandatory * {@link #getStatus() Status} and an optional {@link #getThrowable() Throwable}. * * @since 1.0 */ @API(status = STABLE, since = "1.0") public class TestExecutionResult { /** * Status of executing a single test or container. */ public enum Status { /** * Indicates that the execution of a test or container was * successful. */ SUCCESSFUL, /** * Indicates that the execution of a test or container was * aborted (started but not finished). */ ABORTED, /** * Indicates that the execution of a test or container failed. */ FAILED; } private static final TestExecutionResult SUCCESSFUL_RESULT = new TestExecutionResult(SUCCESSFUL, null); /** * Create a {@code TestExecutionResult} for a successful execution * of a test or container. * @return the {@code TestExecutionResult}; never {@code null} */ public static TestExecutionResult successful() { return SUCCESSFUL_RESULT; } /** * Create a {@code TestExecutionResult} for an aborted execution * of a test or container with the supplied {@link Throwable throwable}. * * @param throwable the throwable that caused the aborted execution; may be * {@code null} * @return the {@code TestExecutionResult}; never {@code null} */ public static TestExecutionResult aborted(Throwable throwable) { return new TestExecutionResult(ABORTED, throwable); } /** * Create a {@code TestExecutionResult} for a failed execution * of a test or container with the supplied {@link Throwable throwable}. * * @param throwable the throwable that caused the failed execution; may be * {@code null} * @return the {@code TestExecutionResult}; never {@code null} */ public static TestExecutionResult failed(Throwable throwable) { return new TestExecutionResult(FAILED, throwable); } private final Status status; private final Throwable throwable; private TestExecutionResult(Status status, Throwable throwable) { this.status = Preconditions.notNull(status, "Status must not be null"); this.throwable = throwable; } /** * Get the {@linkplain Status status} of this result. * * @return the status; never {@code null} */ public Status getStatus() { return status; } /** * Get the throwable that caused this result, if available. * * @return an {@code Optional} containing the throwable; never {@code null} * but potentially empty */ public Optional getThrowable() { return Optional.ofNullable(throwable); } @Override public String toString() { // @formatter:off return new ToStringBuilder(this) .append("status", status) .append("throwable", throwable) .toString(); // @formatter:on } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy