package org.junit.tests.running.methods;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;

public class InheritedTestTest {
    public abstract static class Super {
        @Test
        public void nothing() {
        }
    }

    public static class Sub extends Super {
    }

    @Test
    public void subclassWithOnlyInheritedTestsRuns() {
        Result result = JUnitCore.runClasses(Sub.class);
        assertTrue(result.wasSuccessful());
    }

    public static class SubWithBefore extends Super {
        @Before
        public void gack() {
            fail();
        }
    }

    @Test
    public void subclassWithInheritedTestAndOwnBeforeRunsBefore() {
        assertFalse(JUnitCore.runClasses(SubWithBefore.class).wasSuccessful());
    }
} 
