12637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpackage org.mockito.internal.framework; 22637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 32637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.Mockito; 42637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.MockitoAnnotations; 52637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.MockitoSession; 62637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.exceptions.misusing.RedundantListenerException; 72637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.internal.exceptions.Reporter; 82637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.internal.junit.TestFinishedEvent; 92637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.internal.junit.UniversalTestListener; 102637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.internal.util.MockitoLogger; 112637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.quality.Strictness; 122637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 132637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpublic class DefaultMockitoSession implements MockitoSession { 142637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 152637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin private final Object testClassInstance; 162637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin private final UniversalTestListener listener; 172637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 182637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public DefaultMockitoSession(Object testClassInstance, Strictness strictness, MockitoLogger logger) { 192637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin this.testClassInstance = testClassInstance; 202637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin listener = new UniversalTestListener(strictness, logger); 212637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin try { 222637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin //So that the listener can capture mock creation events 232637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Mockito.framework().addListener(listener); 242637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } catch (RedundantListenerException e) { 252637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Reporter.unfinishedMockingSession(); 262637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 272637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin MockitoAnnotations.initMocks(testClassInstance); 282637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 292637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 302637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void finishMocking() { 312637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin //Cleaning up the state, we no longer need the listener hooked up 322637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin //The listener implements MockCreationListener and at this point 332637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin //we no longer need to listen on mock creation events. We are wrapping up the session 342637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Mockito.framework().removeListener(listener); 352637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 362637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin //Emit test finished event so that validation such as strict stubbing can take place 372637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin listener.testFinished(new TestFinishedEvent() { 382637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public Throwable getFailure() { 392637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin return null; 402637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 412637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public Object getTestClassInstance() { 422637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin return testClassInstance; 432637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 442637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public String getTestMethodName() { 452637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin return null; 462637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 472637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin }); 482637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 492637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin //Finally, validate user's misuse of Mockito framework. 502637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Mockito.validateMockitoUsage(); 512637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 522637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin} 53