blob: 69a437e7bb3955e946d4acfd1114ca7c17af3c25 [file] [log] [blame]
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());
}
}