/*
 * Copyright 2015-2022 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.vintage.engine.samples.junit4;

import org.junit.runner.RunWith;
import org.junit.vintage.engine.samples.junit4.ConfigurableRunner.ChildCount;

/**
 * @since 4.12
 */
@RunWith(ExceptionThrowingRunner.class)
@ChildCount(1)
public class JUnit4SuiteWithExceptionThrowingRunner {
}
