From dad10e30c4aaba6b7a3489edf3e60cf8a1e9f3a4 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 16 Jan 2014 16:33:58 +0100 Subject: [PATCH] Introduce mockito-configuration from bgpcep Change-Id: Id454e3ae9d121f2f75f7c9036c0042280ab6c6c9 Signed-off-by: Robert Varga --- mockito-configuration/pom.xml | 36 +++++++++++++++++ .../ArgumentsExtractorVerifier.java | 40 +++++++++++++++++++ .../configuration/MockitoConfiguration.java | 21 ++++++++++ .../ThrowsUnstubbedMethodException.java | 29 ++++++++++++++ .../UnstubbedMethodException.java | 22 ++++++++++ .../src/main/resources/logback-test.xml | 13 ++++++ .../ArgumentsExtractorVerifierTest.java | 38 ++++++++++++++++++ .../configuration/DefaultAnswerTest.java | 33 +++++++++++++++ pom.xml | 14 +++++-- 9 files changed, 243 insertions(+), 3 deletions(-) create mode 100644 mockito-configuration/pom.xml create mode 100644 mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java create mode 100644 mockito-configuration/src/main/java/org/mockito/configuration/MockitoConfiguration.java create mode 100644 mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java create mode 100644 mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java create mode 100644 mockito-configuration/src/main/resources/logback-test.xml create mode 100644 mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java create mode 100644 mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java diff --git a/mockito-configuration/pom.xml b/mockito-configuration/pom.xml new file mode 100644 index 0000000000..81558ea677 --- /dev/null +++ b/mockito-configuration/pom.xml @@ -0,0 +1,36 @@ + + + + + + org.opendaylight.yangtools + yangtools + 0.1.1-SNAPSHOT + + + + 0.6.0-SNAPSHOT + + 4.0.0 + mockito-configuration + Default mockito configuration + jar + ${project.artifactId} + + 3.0.4 + + + + + + org.mockito + mockito-core + compile + + + junit + junit + + + diff --git a/mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java b/mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java new file mode 100644 index 0000000000..53db342c07 --- /dev/null +++ b/mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.mockito.configuration; + +import org.mockito.exceptions.base.MockitoException; +import org.mockito.internal.invocation.InvocationsFinder; +import org.mockito.internal.verification.api.VerificationData; +import org.mockito.invocation.Invocation; +import org.mockito.verification.VerificationMode; + +import java.util.List; + +/** + * Verifier that extracts arguments from actual invocation. Useful when deeper validation of arguments is needed. + * + */ +public class ArgumentsExtractorVerifier implements VerificationMode { + private Object[] arguments; + + @Override + public void verify(VerificationData data) { + InvocationsFinder finder = new InvocationsFinder(); + List actualInvocations = finder.findInvocations(data.getAllInvocations(), data.getWanted()); + if (actualInvocations.size() != 1) { + throw new MockitoException("This verifier can only be used with 1 invocation, got " + actualInvocations.size()); + } + Invocation invocation = actualInvocations.get(0); + arguments = invocation.getArguments(); + invocation.markVerified(); + + } + public Object[] getArguments(){ + return arguments; + } + } diff --git a/mockito-configuration/src/main/java/org/mockito/configuration/MockitoConfiguration.java b/mockito-configuration/src/main/java/org/mockito/configuration/MockitoConfiguration.java new file mode 100644 index 0000000000..6c783e005d --- /dev/null +++ b/mockito-configuration/src/main/java/org/mockito/configuration/MockitoConfiguration.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.mockito.configuration; + +import org.mockito.stubbing.Answer; + +/** + * Configuration customization for Mockito. Change default answer to {@link ThrowsUnstubbedMethodException}. + */ +public class MockitoConfiguration extends DefaultMockitoConfiguration { + + @Override + public Answer getDefaultAnswer() { + return new ThrowsUnstubbedMethodException(); + } +} diff --git a/mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java b/mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java new file mode 100644 index 0000000000..83262bc518 --- /dev/null +++ b/mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.mockito.configuration; + +import java.io.Serializable; + +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; + +/** + * Answer that throws {@link UnstubbedMethodException}. + */ +public class ThrowsUnstubbedMethodException implements Answer, Serializable { + private static final long serialVersionUID = 1L; + + public ThrowsUnstubbedMethodException() { + } + + @Override + public Object answer(InvocationOnMock invocation) throws Throwable { + Throwable t = new UnstubbedMethodException(invocation.toString() + " was not stubbed"); + throw t; + } +} diff --git a/mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java b/mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java new file mode 100644 index 0000000000..ac748661c0 --- /dev/null +++ b/mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.mockito.configuration; + + +/** + * Exception to be thrown on unstubbed method call. + */ +public class UnstubbedMethodException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public UnstubbedMethodException(String message) { + super(message); + } + +} diff --git a/mockito-configuration/src/main/resources/logback-test.xml b/mockito-configuration/src/main/resources/logback-test.xml new file mode 100644 index 0000000000..2838411682 --- /dev/null +++ b/mockito-configuration/src/main/resources/logback-test.xml @@ -0,0 +1,13 @@ + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + diff --git a/mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java b/mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java new file mode 100644 index 0000000000..ba3a41bc5b --- /dev/null +++ b/mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.mockito.configuration; + +import static org.junit.Assert.assertArrayEquals; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.verify; + +import java.util.List; + +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +public class ArgumentsExtractorVerifierTest { + + @Mock + List mockedList; + + @Test + public void test() { + MockitoAnnotations.initMocks(this); + doReturn(true).when(this.mockedList).add(any(String.class)); + final String argument = "something"; + this.mockedList.add(argument); + // retrieve argument + final ArgumentsExtractorVerifier argumentsExtractorVerifier = new ArgumentsExtractorVerifier(); + verify(this.mockedList, argumentsExtractorVerifier).add(any(String.class)); + assertArrayEquals(new Object[] { argument }, argumentsExtractorVerifier.getArguments()); + } + +} diff --git a/mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java b/mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java new file mode 100644 index 0000000000..c2019ed67c --- /dev/null +++ b/mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.mockito.configuration; + +import static org.junit.Assert.*; + +import java.io.Closeable; +import java.io.IOException; + +import org.junit.Test; +import org.mockito.Mockito; + +public class DefaultAnswerTest { + + @Test + public void testAnswering() throws IOException { + Closeable mock = Mockito.mock(Closeable.class); + try { + mock.close(); + fail(); + } catch (UnstubbedMethodException e) { + assertEquals("closeable.close(); was not stubbed", e.getMessage()); + } + } + + + +} diff --git a/pom.xml b/pom.xml index 4aebc8d746..5f72c52b5e 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,8 @@ 1.7.2 14.0.1 2.4.3 - 2.1.6 + 2.1.6 + 1.9.5 @@ -42,7 +43,8 @@ yang code-generator model - restconf + restconf + mockito-configuration @@ -107,7 +109,13 @@ org.mockito mockito-all - 1.9.5 + ${mockito.version} + test + + + org.mockito + mockito-core + ${mockito.version} test -- 2.36.6