1b5d56e95f27d484ad3098ac18867262e7c8826c1Christian Williams & Phil Goodwinpackage com.xtremelabs.robolectric.bytecode; 25c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 35c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwinimport android.app.Application; 4b5d56e95f27d484ad3098ac18867262e7c8826c1Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.Robolectric; 5b5d56e95f27d484ad3098ac18867262e7c8826c1Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.WithTestDefaultsRunner; 65c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwinimport org.junit.AfterClass; 75c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwinimport org.junit.Before; 85c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwinimport org.junit.Test; 95c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwinimport org.junit.runner.RunWith; 105c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwinimport org.junit.runners.model.InitializationError; 115c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 125c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwinimport java.lang.reflect.Method; 135c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 1440c6251719cccc0a84ae99c976d2836b14374ce6Christian Williamsimport static org.junit.Assert.assertEquals; 1540c6251719cccc0a84ae99c976d2836b14374ce6Christian Williamsimport static org.junit.Assert.assertNotNull; 1640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williamsimport static org.junit.Assert.assertTrue; 175c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 185c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin@RunWith(CustomRobolectricTestRunnerTest.CustomRobolectricTestRunner.class) 195c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwinpublic class CustomRobolectricTestRunnerTest { 205c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin Object preparedTest; 215c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin static Method testMethod; 225c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin static int beforeCallCount = 0; 235c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin static int afterTestCallCount = 0; 245c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 255c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin @Before 265c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin public void setUp() throws Exception { 275c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin beforeCallCount++; 285c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin } 295c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 305c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin @Test 315c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin public void shouldInitializeApplication() throws Exception { 325c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin assertNotNull(Robolectric.application); 337da78c22fdad07916b36e1f0f52291382e9b44c7Christian Williams & Phil Goodwin assertEquals(CustomApplication.class, Robolectric.application.getClass()); 345c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin } 355c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 365c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin @Test 375c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin public void shouldInvokePrepareTestWithAnInstanceOfTheTest() throws Exception { 385c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin assertEquals(this, preparedTest); 395c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin assertEquals(RobolectricClassLoader.class.getName(), preparedTest.getClass().getClassLoader().getClass().getName()); 405c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin } 415c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 425c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin @Test 435c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin public void shouldInvokeBeforeTestWithTheCorrectMethod() throws Exception { 445c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin assertEquals("shouldInvokeBeforeTestWithTheCorrectMethod", testMethod.getName()); 455c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin } 465c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 475c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin @AfterClass 485c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin public static void shouldHaveCalledAfterTest() { 495c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin assertTrue(beforeCallCount > 0); 505c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin assertEquals(beforeCallCount, afterTestCallCount); 515c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin } 525c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 535c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin public static class CustomRobolectricTestRunner extends WithTestDefaultsRunner { 545c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin public CustomRobolectricTestRunner(Class<?> testClass) throws InitializationError { 555c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin super(testClass); 565c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin } 575c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 585c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin @Override public void prepareTest(Object test) { 595c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin ((CustomRobolectricTestRunnerTest) test).preparedTest = test; 605c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin } 615c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 625c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin @Override public void beforeTest(Method method) { 635c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin testMethod = method; 645c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin } 655c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin 665c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin @Override public void afterTest(Method method) { 675c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin afterTestCallCount++; 685c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin } 697da78c22fdad07916b36e1f0f52291382e9b44c7Christian Williams & Phil Goodwin 707da78c22fdad07916b36e1f0f52291382e9b44c7Christian Williams & Phil Goodwin @Override protected Application createApplication() { 717da78c22fdad07916b36e1f0f52291382e9b44c7Christian Williams & Phil Goodwin return new CustomApplication(); 727da78c22fdad07916b36e1f0f52291382e9b44c7Christian Williams & Phil Goodwin } 737da78c22fdad07916b36e1f0f52291382e9b44c7Christian Williams & Phil Goodwin } 747da78c22fdad07916b36e1f0f52291382e9b44c7Christian Williams & Phil Goodwin 757da78c22fdad07916b36e1f0f52291382e9b44c7Christian Williams & Phil Goodwin public static class CustomApplication extends Application { 765c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin } 775c3e3b0e999865255f9ce067097d74b8fbd56aa2Christian Williams & Phil Goodwin} 78