1/* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5package org.mockito.internal.debugging; 6 7 8import org.junit.Test; 9import org.mockito.internal.invocation.InvocationBuilder; 10import org.mockitoutil.TestBase; 11 12import static junit.framework.TestCase.assertEquals; 13 14public class LoggingListenerTest extends TestBase { 15 16 @Test 17 public void may_not_have_any_information() { 18 //given 19 LoggingListener listener = new LoggingListener(true); 20 21 //expect 22 assertEquals("", listener.getStubbingInfo()); 23 } 24 25 @Test 26 public void informs_about_unused_stubs() { 27 //given 28 LoggingListener listener = new LoggingListener(false); 29 30 //when 31 listener.foundUnusedStub(invocationAt("at com.FooTest:30")); 32 listener.foundUnusedStub(invocationAt("at com.FooTest:32")); 33 34 //then 35 assertEquals( 36 "[Mockito] Additional stubbing information (see javadoc for StubbingInfo class):\n" + 37 "[Mockito]\n" + 38 "[Mockito] Unused stubbing (perhaps can be removed from the test?):\n" + 39 "[Mockito]\n" + 40 "[Mockito] 1. at com.FooTest:30\n" + 41 "[Mockito] 2. at com.FooTest:32", listener.getStubbingInfo()); 42 } 43 44 @Test 45 public void calculates_indexes_for_clean_output() { 46 assertEquals(1, LoggingListener.indexOfNextPair(0)); 47 assertEquals(2, LoggingListener.indexOfNextPair(2)); 48 assertEquals(3, LoggingListener.indexOfNextPair(4)); 49 assertEquals(4, LoggingListener.indexOfNextPair(6)); 50 } 51 52 @Test 53 public void informs_about_unused_stubs_due_arg_mismatch() { 54 //given 55 LoggingListener listener = new LoggingListener(false); 56 57 //when 58 listener.foundStubCalledWithDifferentArgs(invocationAt("at com.FooTest:20"), invocationMatcherAt("at com.Foo:100")); 59 listener.foundStubCalledWithDifferentArgs(invocationAt("at com.FooTest:21"), invocationMatcherAt("at com.Foo:121")); 60 61 //then 62 assertEquals( 63 "[Mockito] Additional stubbing information (see javadoc for StubbingInfo class):\n" + 64 "[Mockito]\n" + 65 "[Mockito] Argument mismatch between stubbing and actual invocation (is stubbing correct in the test?):\n" + 66 "[Mockito]\n" + 67 "[Mockito] 1. Stubbed at com.FooTest:20\n" + 68 "[Mockito] Invoked at com.Foo:100\n" + 69 "[Mockito] 2. Stubbed at com.FooTest:21\n" + 70 "[Mockito] Invoked at com.Foo:121", listener.getStubbingInfo()); 71 } 72 73 @Test 74 public void informs_about_various_kinds_of_stubs() { 75 //given 76 LoggingListener listener = new LoggingListener(true); 77 78 //when 79 listener.foundUnusedStub(invocationAt("at com.FooTest:30")); 80 listener.foundStubCalledWithDifferentArgs(invocationAt("at com.FooTest:20"), invocationMatcherAt("at com.Foo:100")); 81 listener.foundUnstubbed(invocationMatcherAt("at com.Foo:96")); 82 83 //then 84 assertEquals( 85 "[Mockito] Additional stubbing information (see javadoc for StubbingInfo class):\n" + 86 "[Mockito]\n" + 87 "[Mockito] Argument mismatch between stubbing and actual invocation (is stubbing correct in the test?):\n" + 88 "[Mockito]\n" + 89 "[Mockito] 1. Stubbed at com.FooTest:20\n" + 90 "[Mockito] Invoked at com.Foo:100\n" + 91 "[Mockito]\n" + 92 "[Mockito] Unused stubbing (perhaps can be removed from the test?):\n" + 93 "[Mockito]\n" + 94 "[Mockito] 1. at com.FooTest:30\n" + 95 "[Mockito]\n" + 96 "[Mockito] Unstubbed method invocations (perhaps missing stubbing in the test?):\n" + 97 "[Mockito]\n" + 98 "[Mockito] 1. at com.Foo:96", listener.getStubbingInfo()); 99 } 100 101 @Test 102 public void hides_unstubbed() { 103 //given 104 LoggingListener listener = new LoggingListener(false); 105 106 //when 107 listener.foundUnstubbed(new InvocationBuilder().toInvocationMatcher()); 108 109 //then 110 assertEquals("", listener.getStubbingInfo()); 111 } 112 113 @Test 114 public void informs_about_unstubbed() { 115 //given 116 LoggingListener listener = new LoggingListener(true); 117 118 //when 119 listener.foundUnstubbed(invocationMatcherAt("com.Foo:20")); 120 121 //then 122 assertEquals( 123 "[Mockito] Additional stubbing information (see javadoc for StubbingInfo class):\n" + 124 "[Mockito]\n" + 125 "[Mockito] Unstubbed method invocations (perhaps missing stubbing in the test?):\n" + 126 "[Mockito]\n" + 127 "[Mockito] 1. com.Foo:20", listener.getStubbingInfo()); 128 } 129} 130