1*b2c653efSSorin Basca package junitparams; 2*b2c653efSSorin Basca 3*b2c653efSSorin Basca import org.junit.Rule; 4*b2c653efSSorin Basca import org.junit.Test; 5*b2c653efSSorin Basca import org.junit.rules.ErrorCollector; 6*b2c653efSSorin Basca import org.junit.rules.ExpectedException; 7*b2c653efSSorin Basca import org.junit.rules.TemporaryFolder; 8*b2c653efSSorin Basca import org.junit.rules.TestName; 9*b2c653efSSorin Basca import org.junit.rules.TestRule; 10*b2c653efSSorin Basca import org.junit.rules.TestWatcher; 11*b2c653efSSorin Basca import org.junit.rules.Timeout; 12*b2c653efSSorin Basca import org.junit.runner.JUnitCore; 13*b2c653efSSorin Basca import org.junit.runner.Result; 14*b2c653efSSorin Basca import org.junit.runner.RunWith; 15*b2c653efSSorin Basca 16*b2c653efSSorin Basca import static org.assertj.core.api.Assertions.*; 17*b2c653efSSorin Basca 18*b2c653efSSorin Basca @RunWith(JUnitParamsRunner.class) 19*b2c653efSSorin Basca public class RulesTest { 20*b2c653efSSorin Basca @Rule 21*b2c653efSSorin Basca public TemporaryFolder folder = new TemporaryFolder(); 22*b2c653efSSorin Basca @Rule 23*b2c653efSSorin Basca public ExpectedException exception = ExpectedException.none(); 24*b2c653efSSorin Basca @Rule 25*b2c653efSSorin Basca public ErrorCollector errors = new ErrorCollector(); 26*b2c653efSSorin Basca @Rule 27*b2c653efSSorin Basca public TestName testName = new TestName(); 28*b2c653efSSorin Basca @Rule 29*b2c653efSSorin Basca public TestWatcher testWatcher = new TestWatcher() { 30*b2c653efSSorin Basca }; 31*b2c653efSSorin Basca @Rule 32*b2c653efSSorin Basca public Timeout timeout = new Timeout(0); 33*b2c653efSSorin Basca 34*b2c653efSSorin Basca 35*b2c653efSSorin Basca @Test 36*b2c653efSSorin Basca @Parameters("") shouldHandleRulesProperly(String n)37*b2c653efSSorin Basca public void shouldHandleRulesProperly(String n) { 38*b2c653efSSorin Basca assertThat(testName.getMethodName()).isEqualTo("shouldHandleRulesProperly"); 39*b2c653efSSorin Basca } 40*b2c653efSSorin Basca 41*b2c653efSSorin Basca @Test shouldProvideHelpfulExceptionMessageWhenRuleIsUsedImproperly()42*b2c653efSSorin Basca public void shouldProvideHelpfulExceptionMessageWhenRuleIsUsedImproperly() { 43*b2c653efSSorin Basca Result result = JUnitCore.runClasses(ProtectedRuleTest.class); 44*b2c653efSSorin Basca 45*b2c653efSSorin Basca assertThat(result.getFailureCount()).isEqualTo(1); 46*b2c653efSSorin Basca assertThat(result.getFailures().get(0).getException()) 47*b2c653efSSorin Basca .hasMessage("The @Rule 'testRule' must be public."); 48*b2c653efSSorin Basca } 49*b2c653efSSorin Basca 50*b2c653efSSorin Basca // TODO(JUnit4.10) - must be static in JUnit 4.10 51*b2c653efSSorin Basca public static class ProtectedRuleTest { 52*b2c653efSSorin Basca @Rule 53*b2c653efSSorin Basca TestRule testRule; 54*b2c653efSSorin Basca 55*b2c653efSSorin Basca @Test test()56*b2c653efSSorin Basca public void test() { 57*b2c653efSSorin Basca 58*b2c653efSSorin Basca } 59*b2c653efSSorin Basca } 60*b2c653efSSorin Basca 61*b2c653efSSorin Basca } 62