/* * Copyright 2015-2017 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 v1.0 which * accompanies this distribution and is available at * * http://www.eclipse.org/legal/epl-v10.html */ package org.junit.jupiter.engine.extension; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.when; import java.lang.reflect.Method; import java.lang.reflect.Parameter; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestReporter; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.api.extension.ParameterContext; import org.junit.platform.commons.util.ReflectionUtils; import org.mockito.Mockito; /** * @since 5.0 */ class TestReporterParameterResolverTests { TestReporterParameterResolver resolver = new TestReporterParameterResolver(); @Test void supports() { Parameter parameter1 = findParameterOfMethod("methodWithTestReporterParameter", TestReporter.class); assertTrue(this.resolver.supportsParameter(parameterContext(parameter1), null)); Parameter parameter2 = findParameterOfMethod("methodWithoutTestReporterParameter", String.class); assertFalse(this.resolver.supportsParameter(parameterContext(parameter2), null)); } @Test void resolve() { Parameter parameter = findParameterOfMethod("methodWithTestReporterParameter", TestReporter.class); TestReporter testReporter = this.resolver.resolveParameter(parameterContext(parameter), Mockito.mock(ExtensionContext.class)); assertNotNull(testReporter); } private Parameter findParameterOfMethod(String methodName, Class<?>... parameterTypes) { Method method = ReflectionUtils.findMethod(Sample.class, methodName, parameterTypes).get(); return method.getParameters()[0]; } private static ParameterContext parameterContext(Parameter parameter) { ParameterContext parameterContext = Mockito.mock(ParameterContext.class); when(parameterContext.getParameter()).thenReturn(parameter); return parameterContext; } static class Sample { void methodWithTestReporterParameter(TestReporter reporter) { } void methodWithoutTestReporterParameter(String nothing) { } } }