package org.junit.tests.running.classes.parent; import org.junit.Assert; import org.junit.ClassRule; import org.junit.Test; import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; import java.lang.reflect.Field; /** * Test class for validate run tests that was load in own ClassLoader */ public class TestWithClassRule { public static Class<?> applyTestClass; @ClassRule public static TestRule rule = new CustomRule(); @Test public void testClassRuleExecuted() throws Exception { Assert.assertNotNull("Description should contain reference to TestClass", applyTestClass); } public static final class CustomRule implements TestRule { public Statement apply(final Statement base, final Description description) { return new Statement() { @Override public void evaluate() throws Throwable { Class<?> testClass = description.getTestClass(); if(testClass != null) { Field field = testClass.getDeclaredField("applyTestClass"); field.set(null, description.getTestClass()); } base.evaluate(); } }; } } }