blob: d35de2cd2f4dd2a08d2f03d61bd21cbd6ed0c3af [file] [log] [blame]
package org.junit.tests.validation;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
import org.junit.Before;
import org.junit.Test;
import org.junit.internal.runners.JUnit4ClassRunner;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.RunWith;
import org.junit.runner.notification.Failure;
@SuppressWarnings("deprecation")
public class BadlyFormedClassesTest {
public static class FaultyConstructor {
public FaultyConstructor() throws Exception {
throw new Exception("Thrown during construction");
}
@Test
public void someTest() {
/*
* Empty test just to fool JUnit and IDEs into running this class as
* a JUnit test
*/
}
}
@RunWith(JUnit4ClassRunner.class)
public static class BadBeforeMethodWithLegacyRunner {
@Before
void before() {
}
@Test
public void someTest() {
}
}
public static class NoTests {
// class without tests
}
@Test
public void constructorException() {
String message = exceptionMessageFrom(FaultyConstructor.class);
assertEquals("Thrown during construction", message);
}
@Test
public void noRunnableMethods() {
assertThat(exceptionMessageFrom(NoTests.class), containsString("No runnable methods"));
}
@Test
public void badBeforeMethodWithLegacyRunner() {
assertEquals("Method before should be public",
exceptionMessageFrom(BadBeforeMethodWithLegacyRunner.class));
}
private String exceptionMessageFrom(Class<?> testClass) {
JUnitCore core = new JUnitCore();
Result result = core.run(testClass);
Failure failure = result.getFailures().get(0);
String message = failure.getException().getMessage();
return message;
}
}