follow up kotlin demo to same as java ones

This commit is contained in:
金戟 2021-01-05 20:44:05 +08:00
parent 2806d38c94
commit 55ec1ca5b5
8 changed files with 43 additions and 13 deletions

View File

@ -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 {
/**

View File

@ -4,7 +4,8 @@ import com.alibaba.testable.demo.model.BlackBox
import java.util.*
/**
* @author flin
* 演示Mock方法调用校验器
* Demonstrate mock method invocation verifier
*/
class DemoMatcher {
/**

View File

@ -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"
}
}
}

View File

@ -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<String>, 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<String>, str: String, i: Int): String {
return list.reduce { a: String, s: String -> a + s } + " * " + "$str * $i"
}
}

View File

@ -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 <T> getList(value: T): List<T> {
val l: MutableList<T> = ArrayList()

View File

@ -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")
}

View File

@ -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

View File

@ -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 {