| package org.junit.tests.running.methods; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertTrue; |
| |
| import java.util.Collections; |
| import java.util.List; |
| |
| import junit.framework.JUnit4TestAdapter; |
| import junit.framework.TestResult; |
| import org.junit.After; |
| import org.junit.AfterClass; |
| import org.junit.Before; |
| import org.junit.BeforeClass; |
| import org.junit.Ignore; |
| import org.junit.Test; |
| import org.junit.runner.JUnitCore; |
| import org.junit.runner.Result; |
| import org.junit.runners.BlockJUnit4ClassRunner; |
| import org.junit.runners.model.InitializationError; |
| |
| public class TestMethodTest { |
| |
| @SuppressWarnings("all") |
| public static class EverythingWrong { |
| private EverythingWrong() { |
| } |
| |
| @BeforeClass |
| public void notStaticBC() { |
| } |
| |
| @BeforeClass |
| static void notPublicBC() { |
| } |
| |
| @BeforeClass |
| public static int nonVoidBC() { |
| return 0; |
| } |
| |
| @BeforeClass |
| public static void argumentsBC(int i) { |
| } |
| |
| @BeforeClass |
| public static void fineBC() { |
| } |
| |
| @AfterClass |
| public void notStaticAC() { |
| } |
| |
| @AfterClass |
| static void notPublicAC() { |
| } |
| |
| @AfterClass |
| public static int nonVoidAC() { |
| return 0; |
| } |
| |
| @AfterClass |
| public static void argumentsAC(int i) { |
| } |
| |
| @AfterClass |
| public static void fineAC() { |
| } |
| |
| @After |
| public static void staticA() { |
| } |
| |
| @After |
| void notPublicA() { |
| } |
| |
| @After |
| public int nonVoidA() { |
| return 0; |
| } |
| |
| @After |
| public void argumentsA(int i) { |
| } |
| |
| @After |
| public void fineA() { |
| } |
| |
| @Before |
| public static void staticB() { |
| } |
| |
| @Before |
| void notPublicB() { |
| } |
| |
| @Before |
| public int nonVoidB() { |
| return 0; |
| } |
| |
| @Before |
| public void argumentsB(int i) { |
| } |
| |
| @Before |
| public void fineB() { |
| } |
| |
| @Test |
| public static void staticT() { |
| } |
| |
| @Test |
| void notPublicT() { |
| } |
| |
| @Test |
| public int nonVoidT() { |
| return 0; |
| } |
| |
| @Test |
| public void argumentsT(int i) { |
| } |
| |
| @Test |
| public void fineT() { |
| } |
| } |
| |
| @Test |
| public void testFailures() throws Exception { |
| List<Throwable> problems = validateAllMethods(EverythingWrong.class); |
| int errorCount = 1 + 4 * 5; // missing constructor plus four invalid methods for each annotation */ |
| assertEquals(errorCount, problems.size()); |
| } |
| |
| static public class SuperWrong { |
| @Test |
| void notPublic() { |
| } |
| } |
| |
| static public class SubWrong extends SuperWrong { |
| @Test |
| public void justFine() { |
| } |
| } |
| |
| @Test |
| public void validateInheritedMethods() throws Exception { |
| List<Throwable> problems = validateAllMethods(SubWrong.class); |
| assertEquals(1, problems.size()); |
| } |
| |
| static public class SubShadows extends SuperWrong { |
| @Override |
| @Test |
| public void notPublic() { |
| } |
| } |
| |
| @Test |
| public void dontValidateShadowedMethods() throws Exception { |
| List<Throwable> problems = validateAllMethods(SubShadows.class); |
| assertTrue(problems.isEmpty()); |
| } |
| |
| private List<Throwable> validateAllMethods(Class<?> clazz) { |
| try { |
| new BlockJUnit4ClassRunner(clazz); |
| } catch (InitializationError e) { |
| return e.getCauses(); |
| } |
| return Collections.emptyList(); |
| } |
| |
| static public class IgnoredTest { |
| @Test |
| public void valid() { |
| } |
| |
| @Ignore |
| @Test |
| public void ignored() { |
| } |
| |
| @Ignore("For testing purposes") |
| @Test |
| public void withReason() { |
| } |
| } |
| |
| @Test |
| public void ignoreRunner() { |
| JUnitCore runner = new JUnitCore(); |
| Result result = runner.run(IgnoredTest.class); |
| assertEquals(2, result.getIgnoreCount()); |
| assertEquals(1, result.getRunCount()); |
| } |
| |
| @Test |
| public void compatibility() { |
| TestResult result = new TestResult(); |
| new JUnit4TestAdapter(IgnoredTest.class).run(result); |
| assertEquals(1, result.runCount()); |
| } |
| |
| public static class Confused { |
| @Test |
| public void a(Object b) { |
| } |
| |
| @Test |
| public void a() { |
| } |
| } |
| |
| @Test(expected = InitializationError.class) |
| public void overloaded() throws InitializationError { |
| new BlockJUnit4ClassRunner(Confused.class); |
| } |
| |
| public static class ConstructorParameter { |
| public ConstructorParameter(Object something) { |
| } |
| |
| @Test |
| public void a() { |
| } |
| } |
| |
| @Test(expected = InitializationError.class) |
| public void constructorParameter() throws InitializationError { |
| new BlockJUnit4ClassRunner(ConstructorParameter.class); |
| } |
| |
| public static class OnlyTestIsIgnored { |
| @Ignore |
| @Test |
| public void ignored() { |
| } |
| } |
| |
| @Test |
| public void onlyIgnoredMethodsIsStillFineTestClass() { |
| Result result = JUnitCore.runClasses(OnlyTestIsIgnored.class); |
| assertEquals(0, result.getFailureCount()); |
| assertEquals(1, result.getIgnoreCount()); |
| } |
| } |