Best Mockito code snippet using org.mockito.BDDMockito.willThrow
Source:BDDMockito.java  
...40 * 41 * Stubbing voids with throwables:42 * <pre class="code"><code class="java">43 *   //given44 *   willThrow(new RuntimeException("boo")).given(mock).foo();45 *   46 *   //when47 *   Result result = systemUnderTest.perform();48 *   49 *   //then50 *   assertEquals(failure, result);51 * </code></pre>52 * <p>53 * One of the purposes of BDDMockito is also to show how to tailor the mocking syntax to a different programming style.54 *55 * @since 1.8.056 */57@SuppressWarnings("unchecked")58public class BDDMockito extends Mockito {59    60    /**61     * See original {@link OngoingStubbing}62     * @since 1.8.063     */64    public static interface BDDMyOngoingStubbing<T> {65        66        /**67         * See original {@link OngoingStubbing#thenAnswer(Answer)}68         * @since 1.8.069         */70        BDDMyOngoingStubbing<T> willAnswer(Answer<?> answer);7172        /**73         * See original {@link OngoingStubbing#then(Answer)}74         * @since 1.9.075         */76        BDDMyOngoingStubbing<T> will(Answer<?> answer);7778        /**79         * See original {@link OngoingStubbing#thenReturn(Object)}80         * @since 1.8.081         */82        BDDMyOngoingStubbing<T> willReturn(T value);8384        /**85         * See original {@link OngoingStubbing#thenReturn(Object, Object[])}86         * @since 1.8.087         */88        BDDMyOngoingStubbing<T> willReturn(T value, T... values);8990        /**91         * See original {@link OngoingStubbing#thenThrow(Throwable...)}92         * @since 1.8.093         */94        BDDMyOngoingStubbing<T> willThrow(Throwable... throwables);9596        /**97         * See original {@link OngoingStubbing#thenThrow(Class[])}98         * @since 1.9.099         */100        BDDMyOngoingStubbing<T> willThrow(Class<? extends Throwable>... throwableClasses);101102        /**103         * See original {@link OngoingStubbing#thenCallRealMethod()}104         * @since 1.9.0105         */106        BDDMyOngoingStubbing<T> willCallRealMethod();107108        /**109         * See original {@link OngoingStubbing#getMock()}110         * @since 1.9.0111         */112        <M> M getMock();113    }114    115    public static class BDDOngoingStubbingImpl<T> implements BDDMyOngoingStubbing<T> {116117        private final OngoingStubbing<T> mockitoOngoingStubbing;118119        public BDDOngoingStubbingImpl(OngoingStubbing<T> ongoingStubbing) {120            this.mockitoOngoingStubbing = ongoingStubbing;121        }122123        /* (non-Javadoc)124         * @see BDDMockito.BDDMyOngoingStubbing#willAnswer(Answer)125         */126        public BDDMyOngoingStubbing<T> willAnswer(Answer<?> answer) {127            return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenAnswer(answer));128        }129130        /* (non-Javadoc)131         * @see BDDMockito.BDDMyOngoingStubbing#will(Answer)132         */133        public BDDMyOngoingStubbing<T> will(Answer<?> answer) {134            return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.then(answer));135        }136137        /* (non-Javadoc)138         * @see BDDMockito.BDDMyOngoingStubbing#willReturn(java.lang.Object)139         */140        public BDDMyOngoingStubbing<T> willReturn(T value) {141            return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenReturn(value));142        }143144        /* (non-Javadoc)145         * @see BDDMockito.BDDMyOngoingStubbing#willReturn(java.lang.Object, T[])146         */147        public BDDMyOngoingStubbing<T> willReturn(T value, T... values) {148            return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenReturn(value, values));149        }150151        /* (non-Javadoc)152         * @see BDDMockito.BDDMyOngoingStubbing#willThrow(java.lang.Throwable[])153         */154        public BDDMyOngoingStubbing<T> willThrow(Throwable... throwables) {155            return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenThrow(throwables));156        }157        /* (non-Javadoc)158         * @see BDDMockito.BDDMyOngoingStubbing#willThrow(java.lang.Class[])159         */160        public BDDMyOngoingStubbing<T> willThrow(Class<? extends Throwable>... throwableClasses) {161            return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenThrow(throwableClasses));162        }163164        public BDDMyOngoingStubbing<T> willCallRealMethod() {165            return new BDDOngoingStubbingImpl<T>(mockitoOngoingStubbing.thenCallRealMethod());166        }167168        public <M> M getMock() {169            return (M) mockitoOngoingStubbing.getMock();170        }171    }172    173    /**174     * see original {@link Mockito#when(Object)}175     * @since 1.8.0176     */177    public static <T> BDDMyOngoingStubbing<T> given(T methodCall) {178        return new BDDOngoingStubbingImpl<T>(Mockito.when(methodCall));179    }180    181    /**182     * See original {@link Stubber}183     * @since 1.8.0184     */185    public static interface BDDStubber {186        /**187         * See original {@link Stubber#doAnswer(Answer)}188         * @since 1.8.0189         */190        BDDStubber willAnswer(Answer answer);191        192        /**193         * See original {@link Stubber#doNothing()}194         * @since 1.8.0195         */196        BDDStubber willNothing();197        198        /**199         * See original {@link Stubber#doReturn(Object)}200         * @since 1.8.0201         */202        BDDStubber willReturn(Object toBeReturned);203        204        /**205         * See original {@link Stubber#doThrow(Throwable)}206         * @since 1.8.0207         */208        BDDStubber willThrow(Throwable toBeThrown);209210        /**211         * See original {@link Stubber#doThrow(Class)}212         * @since 1.9.0213         */214        BDDStubber willThrow(Class<? extends Throwable> toBeThrown);215216        /**217         * See original {@link Stubber#doCallRealMethod()}218         * @since 1.9.0219         */220        BDDStubber willCallRealMethod();221222        /**223         * See original {@link Stubber#when(Object)}224         * @since 1.8.0225         */226        <T> T given(T mock);227    }228    229    public static class BDDStubberImpl implements BDDStubber {230231        private final Stubber mockitoStubber;232233        public BDDStubberImpl(Stubber mockitoStubber) {234            this.mockitoStubber = mockitoStubber;235        }236237        /* (non-Javadoc)238         * @see BDDMockito.BDDStubber#given(java.lang.Object)239         */240        public <T> T given(T mock) {241            return mockitoStubber.when(mock);242        }243244        /* (non-Javadoc)245         * @see BDDMockito.BDDStubber#willAnswer(Answer)246         */247        public BDDStubber willAnswer(Answer answer) {248            return new BDDStubberImpl(mockitoStubber.doAnswer(answer));249        }250251        /* (non-Javadoc)252         * @see BDDMockito.BDDStubber#willNothing()253         */254        public BDDStubber willNothing() {255            return new BDDStubberImpl(mockitoStubber.doNothing());256        }257258        /* (non-Javadoc)259         * @see BDDMockito.BDDStubber#willReturn(java.lang.Object)260         */261        public BDDStubber willReturn(Object toBeReturned) {262            return new BDDStubberImpl(mockitoStubber.doReturn(toBeReturned));263        }264265        /* (non-Javadoc)266         * @see BDDMockito.BDDStubber#willThrow(java.lang.Throwable)267         */268        public BDDStubber willThrow(Throwable toBeThrown) {269            return new BDDStubberImpl(mockitoStubber.doThrow(toBeThrown));270        }271272        /* (non-Javadoc)273         * @see BDDMockito.BDDStubber#willThrow(Class)274         */275        public BDDStubber willThrow(Class<? extends Throwable> toBeThrown) {276            return new BDDStubberImpl(mockitoStubber.doThrow(toBeThrown));277        }278279        /* (non-Javadoc)280         * @see BDDMockito.BDDStubber#willCallRealMethod()281         */282        public BDDStubber willCallRealMethod() {283            return new BDDStubberImpl(mockitoStubber.doCallRealMethod());284        }285    }286    287    /**288     * see original {@link Mockito#doThrow(Throwable)}289     * @since 1.8.0290     */291    public static BDDStubber willThrow(Throwable toBeThrown) {292        return new BDDStubberImpl(Mockito.doThrow(toBeThrown));293    }294295    /**296     * see original {@link Mockito#doThrow(Throwable)}297     * @since 1.9.0298     */299    public static BDDStubber willThrow(Class<? extends Throwable> toBeThrown) {300        return new BDDStubberImpl(Mockito.doThrow(toBeThrown));301    }302    303    /**304     * see original {@link Mockito#doAnswer(Answer)}305     * @since 1.8.0306     */307    public static BDDStubber willAnswer(Answer answer) {308        return new BDDStubberImpl(Mockito.doAnswer(answer));309    }  310    311    /**312     * see original {@link Mockito#doNothing()}313     * @since 1.8.0
...Source:BDDMockitoMixin.java  
...65    default BDDMockito.BDDStubber willReturn(Object toBeReturned, Object... toBeReturnedNext) {66        return BDDMockito.willReturn(toBeReturned, toBeReturnedNext);67    }68    /**69     * Delegate call to public static org.mockito.BDDMockito$BDDStubber org.mockito.BDDMockito.willThrow(java.lang.Class<? extends java.lang.Throwable>)70     * {@link org.mockito.BDDMockito#willThrow(java.lang.Class)}71     */72    default BDDMockito.BDDStubber willThrow(Class<? extends Throwable> toBeThrown) {73        return BDDMockito.willThrow(toBeThrown);74    }75    /**76     * Delegate call to public static org.mockito.BDDMockito$BDDStubber org.mockito.BDDMockito.willThrow(java.lang.Throwable...)77     * {@link org.mockito.BDDMockito#willThrow(java.lang.Throwable[])}78     */79    default BDDMockito.BDDStubber willThrow(Throwable... toBeThrown) {80        return BDDMockito.willThrow(toBeThrown);81    }82    /**83     * Delegate call to public static org.mockito.BDDMockito$BDDStubber org.mockito.BDDMockito.willThrow(java.lang.Class<? extends java.lang.Throwable>,java.lang.Class<? extends java.lang.Throwable>...)84     * {@link org.mockito.BDDMockito#willThrow(java.lang.Class,java.lang.Class[])}85     */86    default BDDMockito.BDDStubber willThrow(Class<? extends Throwable> toBeThrown, Class<? extends Throwable>... throwableTypes) {87        return BDDMockito.willThrow(toBeThrown, throwableTypes);88    }89}...willThrow
Using AI Code Generation
1import static org.mockito.BDDMockito.willThrow;2import static org.mockito.BDDMockito.willReturn;3import static org.mockito.BDDMockito.willDoNothing;4import static org.mockito.BDDMockito.willAnswer;5import static org.mockito.BDDMockito.willCallRealMethod;6public class MockingVoidMethod {7    public void test() {8        List mockedList = mock(List.class);9        willThrow(new RuntimeException()).given(mockedList).clear();10        willReturn(true).given(mockedList).add("one");11        willReturn(true).given(mockedList).add("two");12        willDoNothing().given(mockedList).add("three");13        willAnswer(new Answer() {14            public Object answer(InvocationOnMock invocation) {15                Object[] args = invocation.getArguments();16                Object mock = invocation.getMock();17                return "called with arguments: " + args;18            }19        }).given(mockedList).add("four");20        willCallRealMethod().given(mockedList).add("five");21        mockedList.clear();22        System.out.println(mockedList.add("one"));23        System.out.println(mockedList.add("two"));24        System.out.println(mockedList.add("three"));25        System.out.println(mockedList.add("four"));26        System.out.println(mockedList.add("five"));27    }28}willThrow
Using AI Code Generation
1import org.junit.Test;2import org.junit.runner.RunWith;3import org.mockito.Mock;4import org.mockito.junit.MockitoJUnitRunner;5import static org.mockito.BDDMockito.*;6import static org.junit.Assert.*;7@RunWith(MockitoJUnitRunner.class)8public class Test1 {9    private Test1 test1;10    public void test1() {11        willThrow(new RuntimeException()).given(test1).test1();12        try {13            test1.test1();14            fail("Expected exception");15        } catch (RuntimeException e) {16        }17    }18}willThrow
Using AI Code Generation
1import org.junit.Test;2import org.junit.runner.RunWith;3import org.mockito.BDDMockito;4import org.mockito.runners.MockitoJUnitRunner;5import java.util.List;6@RunWith(MockitoJUnitRunner.class)7public class Test1 {8    public void test1() {9        List mock = BDDMockito.mock(List.class);10        BDDMockito.willThrow(new RuntimeException("Exception")).given(mock).clear();11        mock.clear();12    }13}14mock.clear();15-> at Test1.test1(Test1.java:17)16    given(mock.get(anyObject())).willReturn(1);17    given(mock.get(anyObject())).willReturn(Integer.valueOf(1));18	at org.mockito.Mockito.validateMockitoUsage(Mockito.java:159)19	at org.mockito.internal.runners.DefaultInternalRunner$1.validateMockitoUsage(DefaultInternalRunner.java:46)20	at org.mockito.internal.runners.DefaultInternalRunner$1.run(DefaultInternalRunner.java:38)21	at org.mockito.internal.runners.DefaultInternalRunner.run(DefaultInternalRunner.java:84)22	at org.mockito.internal.runners.StrictRunner.run(StrictRunner.java:39)23	at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:163)24	at org.junit.runner.JUnitCore.run(JUnitCore.java:157)25	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)26	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)27	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)28	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)29	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)30	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)31	at java.lang.reflect.Method.invoke(Method.java:597)32	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)willThrow
Using AI Code Generation
1import static org.mockito.BDDMockito.willThrow;2import static org.mockito.Mockito.mock;3import static org.mockito.Mockito.verify;4import static org.mockito.Mockito.when;5import org.junit.Test;6import org.mockito.Mockito;7public class Test1 {8    public void test1() {9        List mockedList = mock(List.class);10        willThrow(new RuntimeException()).given(mockedList).clear();11        mockedList.clear();12    }13}willThrow
Using AI Code Generation
1import org.junit.Test;2public class Test1 {3  public void test() {4    Foo foo = mock(Foo.class);5    willThrow(new RuntimeException()).given(foo).bar();6    foo.bar();7  }8}9at org.mockito.internal.stubbing.answers.ThrowsException.createException(ThrowsException.java:35)10at org.mockito.internal.stubbing.answers.ThrowsException.answer(ThrowsException.java:26)11at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:91)12at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)13at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:38)14at org.mockito.internal.creation.cglib.MethodInterceptorFilter.intercept(MethodInterceptorFilter.java:59)15at com.example.Test1$Foo$MockitoMock$-1184903090.bar(Unknown Source)16at com.example.Test1.test(Test1.java:11)17at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)18at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)19at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)20at java.lang.reflect.Method.invoke(Method.java:597)21at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)22at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)23at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)24at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)25at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)26at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)27at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)28at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)29at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)30at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)31at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)willThrow
Using AI Code Generation
1public class TestMockito {2    private List<String> mockList;3    public void testWillThrow() {4        BDDMockito.given(mockList.get(0)).willThrow(new RuntimeException());5    }6}7	at org.mockito.BDDMockito$2.answer(BDDMockito.java:202)8	at org.mockito.internal.handler.MockHandlerImpl.handle(MockHandlerImpl.java:91)9	at org.mockito.internal.handler.NullResultGuardian.handle(NullResultGuardian.java:29)10	at org.mockito.internal.handler.InvocationNotifierHandler.handle(InvocationNotifierHandler.java:38)11	at org.mockito.internal.creation.cglib.MethodInterceptorFilter.intercept(MethodInterceptorFilter.java:59)12	at org.mockito.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)13	at org.mockito.internal.util.MockUtil$MockProxyInvocationHandler.invoke(MockUtil.java:111)14	at com.sun.proxy.$Proxy0.get(Unknown Source)15	at TestMockito.testWillThrow(TestMockito.java:20)16	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)17	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)18	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)19	at java.lang.reflect.Method.invoke(Method.java:498)20	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)21	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)22	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)23	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)24	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)25	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)26	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)27	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)28	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)29	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)30	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)31	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
