diff --git a/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoInherit.kt b/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoInherit.kt index d813582..2bb0c48 100644 --- a/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoInherit.kt +++ b/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoInherit.kt @@ -4,6 +4,10 @@ import com.alibaba.testable.demo.model.BlackBox import com.alibaba.testable.demo.model.Box import com.alibaba.testable.demo.model.Color +/** + * 演示父类变量引用子类对象时的Mock场景 + * Demonstrate scenario of mocking method from sub-type object referred by parent-type variable + */ class DemoInherit { /** diff --git a/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoMatcher.kt b/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoMatcher.kt index bf35841..9827666 100644 --- a/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoMatcher.kt +++ b/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoMatcher.kt @@ -4,7 +4,8 @@ import com.alibaba.testable.demo.model.BlackBox import java.util.* /** - * @author flin + * 演示Mock方法调用校验器 + * Demonstrate mock method invocation verifier */ class DemoMatcher { /** diff --git a/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoMock.kt b/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoMock.kt index 5adbc00..7e896a6 100644 --- a/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoMock.kt +++ b/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoMock.kt @@ -5,6 +5,10 @@ import com.alibaba.testable.demo.model.ColorBox import java.nio.file.Files import java.nio.file.Paths +/** + * 演示基本的Mock功能 + * Demonstrate basic mock functionality + */ class DemoMock { /** @@ -18,7 +22,7 @@ class DemoMock { * method with member method invoke */ fun outerFunc(s: String): String { - return "{ \"res\": \"" + innerFunc(s) + "\"}" + return "{ \"res\": \"" + innerFunc(s) + staticFunc() + "\"}" } /** @@ -52,4 +56,10 @@ class DemoMock { } private fun callFromDifferentMethod() = "realOne" + + companion object { + private fun staticFunc(): String { + return "_STATIC_TAIL" + } + } } diff --git a/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoPrivateAccess.kt b/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoPrivateAccess.kt index adfe0d5..e1c3587 100644 --- a/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoPrivateAccess.kt +++ b/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoPrivateAccess.kt @@ -1,5 +1,9 @@ package com.alibaba.testable.demo +/** + * 演示私有成员访问功能 + * Demonstrate private member access functionality + */ class DemoPrivateAccess { /** @@ -15,8 +19,8 @@ class DemoPrivateAccess { /** * private member method */ - private fun privateFunc(s: String, i: Int): String { - return "$s - $i" + private fun privateFunc(list: List, str: String, i: Int): String { + return list.reduce { a: String, s: String -> a + s } + " + " + "$str + $i" } companion object { @@ -29,15 +33,15 @@ class DemoPrivateAccess { /** * private static method */ - private fun privateStaticFunc(s: String, i: Int): String { - return "$s + $i" + private fun privateStaticFunc(str: String, i: Int): String { + return "$str + $i" } /** * private jvm static method */ - @JvmStatic private fun privateJvmStaticFunc(s: String, i: Int): String { - return "$s * $i" + @JvmStatic private fun privateJvmStaticFunc(list: List, str: String, i: Int): String { + return list.reduce { a: String, s: String -> a + s } + " * " + "$str * $i" } } diff --git a/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoTemplate.kt b/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoTemplate.kt index 74458ba..6f15ba2 100644 --- a/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoTemplate.kt +++ b/demo/kotlin-demo/src/main/kotlin/com/alibaba/testable/demo/DemoTemplate.kt @@ -4,6 +4,10 @@ import java.util.ArrayList import java.util.HashMap import java.util.HashSet +/** + * 演示模板方法的Mock场景 + * Demonstrate scenario of mocking template method + */ class DemoTemplate { private fun getList(value: T): List { val l: MutableList = ArrayList() diff --git a/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoMockTest.kt b/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoMockTest.kt index 12a77bb..ba2be22 100644 --- a/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoMockTest.kt +++ b/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoMockTest.kt @@ -25,6 +25,11 @@ internal class DemoMockTest { @MockMethod private fun innerFunc(self: DemoMock, text: String) = "mock_$text" + @MockMethod + private fun staticFunc(self: DemoMock): String { + return "_MOCK_TAIL"; + } + @MockMethod private fun trim(self: BlackBox) = "trim_string" @@ -65,7 +70,7 @@ internal class DemoMockTest { @Test fun should_able_to_mock_member_method() { - assertEquals("{ \"res\": \"mock_hello\"}", demoMock.outerFunc("hello")) + assertEquals("{ \"res\": \"mock_hello_MOCK_TAIL\"}", demoMock.outerFunc("hello")) verify("innerFunc").with("hello") } diff --git a/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoPrivateAccessTest.kt b/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoPrivateAccessTest.kt index 438c687..52c5b90 100644 --- a/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoPrivateAccessTest.kt +++ b/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoPrivateAccessTest.kt @@ -14,7 +14,8 @@ internal class DemoPrivateAccessTest { @Test fun should_able_to_access_private_method() { - assertEquals("hello - 1", PrivateAccessor.invoke(demoPrivateAccess, "privateFunc", "hello", 1)) + val list = listOf("a", "b", "c"); + assertEquals("abc + hello + 1", PrivateAccessor.invoke(demoPrivateAccess, "privateFunc", list, "hello", 1)) } @Test @@ -25,8 +26,9 @@ internal class DemoPrivateAccessTest { @Test fun should_able_to_access_private_static_method() { + val list = listOf("a", "b", "c"); assertEquals("hello + 1", PrivateAccessor.invokeStatic(DemoPrivateAccess::class.java, "privateStaticFunc", "hello", 1)) - assertEquals("hello * 1", PrivateAccessor.invokeStatic(DemoPrivateAccess::class.java, "privateJvmStaticFunc", "hello", 1)) + assertEquals("abc * hello * 1", PrivateAccessor.invokeStatic(DemoPrivateAccess::class.java, "privateJvmStaticFunc", list, "hello", 1)) } @Test diff --git a/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoTemplateTest.kt b/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoTemplateTest.kt index 880ea37..608a0c3 100644 --- a/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoTemplateTest.kt +++ b/demo/kotlin-demo/src/test/kotlin/com/alibaba/testable/demo/DemoTemplateTest.kt @@ -7,8 +7,8 @@ import org.junit.jupiter.api.Test import java.util.* /** - * 演示模板方法可以被Mock - * Demonstrate template method can be mocked + * 演示模板方法的Mock场景 + * Demonstrate scenario of mocking template method */ internal class DemoTemplateTest {