org.junit.jupiter.engine.extension.TestInfoParameterResolver Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of junit-jupiter-engine Show documentation
Show all versions of junit-jupiter-engine Show documentation
Module "junit-jupiter-engine" of JUnit 5.
/*
* Copyright 2015-2024 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.jupiter.engine.extension;
import java.lang.reflect.Method;
import java.util.Optional;
import java.util.Set;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.api.extension.ExtensionContext;
import org.junit.jupiter.api.extension.ParameterContext;
import org.junit.jupiter.api.extension.ParameterResolver;
import org.junit.platform.commons.util.ToStringBuilder;
/**
* {@link ParameterResolver} that resolves the {@link TestInfo} for
* the currently executing test.
*
* @since 5.0
*/
class TestInfoParameterResolver implements ParameterResolver {
@Override
public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
return (parameterContext.getParameter().getType() == TestInfo.class);
}
@Override
public TestInfo resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
return new DefaultTestInfo(extensionContext);
}
private static class DefaultTestInfo implements TestInfo {
private final String displayName;
private final Set tags;
private final Optional> testClass;
private final Optional testMethod;
DefaultTestInfo(ExtensionContext extensionContext) {
this.displayName = extensionContext.getDisplayName();
this.tags = extensionContext.getTags();
this.testClass = extensionContext.getTestClass();
this.testMethod = extensionContext.getTestMethod();
}
@Override
public String getDisplayName() {
return this.displayName;
}
@Override
public Set getTags() {
return this.tags;
}
@Override
public Optional> getTestClass() {
return this.testClass;
}
@Override
public Optional getTestMethod() {
return this.testMethod;
}
@Override
public String toString() {
// @formatter:off
return new ToStringBuilder(this)
.append("displayName", this.displayName)
.append("tags", this.tags)
.append("testClass", nullSafeGet(this.testClass))
.append("testMethod", nullSafeGet(this.testMethod))
.toString();
// @formatter:on
}
private static Object nullSafeGet(Optional> optional) {
return optional != null ? optional.orElse(null) : null;
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy