package org.junit.internal.requests;

import org.junit.internal.runners.ErrorReportingRunner;
import org.junit.runner.Request;
import org.junit.runner.Runner;
import org.junit.runner.manipulation.Filter;
import org.junit.runner.manipulation.NoTestsRemainException;

A filtered Request.
/** * A filtered {@link Request}. */
public final class FilterRequest extends Request { private final Request request; /* * We have to use the f prefix, because IntelliJ's JUnit4IdeaTestRunner uses * reflection to access this field. See * https://github.com/junit-team/junit/issues/960 */ private final Filter fFilter;
Creates a filtered Request
Params:
  • request – a Request describing your Tests
  • filter – Filter to apply to the Tests described in request
/** * Creates a filtered Request * * @param request a {@link Request} describing your Tests * @param filter {@link Filter} to apply to the Tests described in * <code>request</code> */
public FilterRequest(Request request, Filter filter) { this.request = request; this.fFilter = filter; } @Override public Runner getRunner() { try { Runner runner = request.getRunner(); fFilter.apply(runner); return runner; } catch (NoTestsRemainException e) { return new ErrorReportingRunner(Filter.class, new Exception(String .format("No tests found matching %s from %s", fFilter .describe(), request.toString()))); } } }