diff options
author | Philip P. Moltmann <moltmann@google.com> | 2017-12-15 11:12:05 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-12-15 11:12:05 +0000 |
commit | 3fb6123bd1436402c0c57701f132c2e04722a3c9 (patch) | |
tree | 85e8de974c25bce7e361d0ddee96e5952b6039e9 | |
parent | 9ca7c9294663d035d3e903e74f81ffdfb7127d3e (diff) | |
parent | 2f4a87c5c2547e38a16612e51485a9a445786993 (diff) | |
download | mockito-3fb6123bd1436402c0c57701f132c2e04722a3c9.tar.gz |
Merge "Add mockito-inline for host tests" am: e64ea0b85e
am: 2f4a87c5c2
Change-Id: I407dc6d59a5c1717d2510b8619ab34383376ea8d
7 files changed, 98 insertions, 0 deletions
@@ -67,6 +67,13 @@ java_library_static { sdk_version: "16", } +// Compatibility library for old name of host target +java_library_host { + name: "mockito-inline", + static_libs: ["mockito"], + java_resource_dirs: ["subprojects/inline/src/main/resources"], +} + // Main target for dependent projects. Bundles all the run-time dependencies // needed to run Mockito tests on the device. java_library_static { diff --git a/subprojects/inline/inline.gradle b/subprojects/inline/inline.gradle new file mode 100644 index 0000000..be10361 --- /dev/null +++ b/subprojects/inline/inline.gradle @@ -0,0 +1,10 @@ +description = "Mockito preconfigured inline mock maker (intermediate and to be superseeded by automatic usage in a future version)" + +apply from: "$rootDir/gradle/java-library.gradle" + +dependencies { + compile project.rootProject + testCompile libraries.junit4 +} + +tasks.javadoc.enabled = false diff --git a/subprojects/inline/src/main/resources/mockito-extensions/org.mockito.plugins.MockMaker b/subprojects/inline/src/main/resources/mockito-extensions/org.mockito.plugins.MockMaker new file mode 100644 index 0000000..ca6ee9c --- /dev/null +++ b/subprojects/inline/src/main/resources/mockito-extensions/org.mockito.plugins.MockMaker @@ -0,0 +1 @@ +mock-maker-inline
\ No newline at end of file diff --git a/subprojects/inline/src/test/java/org/mockitoinline/FinalClassMockingTest.java b/subprojects/inline/src/test/java/org/mockitoinline/FinalClassMockingTest.java new file mode 100644 index 0000000..0f2ea78 --- /dev/null +++ b/subprojects/inline/src/test/java/org/mockitoinline/FinalClassMockingTest.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2017 Mockito contributors + * This program is made available under the terms of the MIT License. + */ +package org.mockitoinline; + +import org.junit.Test; +import org.mockito.Mockito; + +public class FinalClassMockingTest { + + @Test + public void no_exception_while_mocking_final_class() throws Exception { + Mockito.mock(FinalClass.class); + } + + private static final class FinalClass { + + } + +} diff --git a/subprojects/inline/src/test/java/org/mockitoinline/PluginTest.java b/subprojects/inline/src/test/java/org/mockitoinline/PluginTest.java new file mode 100644 index 0000000..19526db --- /dev/null +++ b/subprojects/inline/src/test/java/org/mockitoinline/PluginTest.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2017 Mockito contributors + * This program is made available under the terms of the MIT License. + */ +package org.mockitoinline; + +import org.junit.Test; +import org.mockito.internal.configuration.plugins.Plugins; +import org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker; + +import static org.junit.Assert.*; + +public class PluginTest { + + @Test + public void plugin_type_should_be_inline() throws Exception { + assertTrue(Plugins.getMockMaker() instanceof InlineByteBuddyMockMaker); + } + +} diff --git a/subprojects/inline/src/test/java/org/mockitoinline/StubbingLocationTest.java b/subprojects/inline/src/test/java/org/mockitoinline/StubbingLocationTest.java new file mode 100644 index 0000000..8476006 --- /dev/null +++ b/subprojects/inline/src/test/java/org/mockitoinline/StubbingLocationTest.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2017 Mockito contributors + * This program is made available under the terms of the MIT License. + */ +package org.mockitoinline; + +import java.util.Collections; +import java.util.Set; +import org.junit.Test; +import org.mockito.internal.invocation.finder.AllInvocationsFinder; +import org.mockito.stubbing.Stubbing; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class StubbingLocationTest { + + @Test + public void stubbing_location_should_be_the_correct_point() { + ConcreteClass mock = mock(ConcreteClass.class); + String frame; + // Initializing 'frame' at the method parameter point is to gain the exact line number of the stubbing point. + when(mock.concreteMethod(frame = Thread.currentThread().getStackTrace()[1].toString())).thenReturn(""); + mock.concreteMethod(frame); + Set<Stubbing> stubbings = AllInvocationsFinder.findStubbings(Collections.singleton(mock)); + assertEquals(1, stubbings.size()); + String location = stubbings.iterator().next().getInvocation().getLocation().toString(); + assertEquals("-> at " + frame, location); + } + + static final class ConcreteClass { + String concreteMethod(String s) { + throw new RuntimeException(s); + } + } + +} diff --git a/update_source.sh b/update_source.sh index 122fb3b..12f1a36 100755 --- a/update_source.sh +++ b/update_source.sh @@ -25,6 +25,7 @@ INCLUDE=" LICENSE src subprojects/android + subprojects/inline " EXCLUDE=" |