阿里 Mock 工具正式开源,干掉市面上所有 Mock 工具( 二 )


增加一个类 , 调用任意方法、成员方法、静态方法:
/** * @from 来源:Java技术栈 * @author 栈长 */public class TestableMock {/*** 调用任意方法*/public String commonMethod() {return " www ".trim() + "." + " javastack".substring(1) + "www.javastack.cn".startsWith(".com");}/*** 调用成员、静态方法*/public String memberMethod(String s) {return "{ "result": "" + innerMethod(s) + staticMethod() + ""}";}private static String staticMethod() {return "WWW_JAVASTACK_CN";}private String innerMethod(String website) {return "our website is: " + website;}}增加单元测试类:
import com.alibaba.testable.core.annotation.MockMethod;import org.junit.jupiter.api.Test;import static com.alibaba.testable.core.matcher.InvokeVerifier.verify;import static org.junit.jupiter.api.Assertions.assertEquals;/** * @author 栈长 * @from 来源:Java技术栈 */class TestableMockTest {private TestableMock testableMock = new TestableMock();/*** Mock 任意方法* @return*/@MockMethod(targetClass = String.class)private String trim() {return "http://www";}@MockMethod(targetClass = String.class, targetMethod = "substring")private String substr(int i) {return "javastack.cn_";}@MockMethod(targetClass = String.class)private boolean startsWith(String website) {return false;}/*** Mock 成员方法* @param text* @return*/@MockMethod(targetClass = TestableMock.class)private String innerMethod(String text) {return "mock_" + text;}/*** Mock 静态方法* @return*/@MockMethod(targetClass = TestableMock.class)private String staticMethod() {return "_MOCK_JAVASTACK";}@Testvoid commonMethodTest() {assertEquals("http://www.javastack.cn_false", testableMock.commonMethod());verify("trim").withTimes(1);verify("substr").withTimes(1);verify("startsWith").withTimes(1);}@Testvoid memberMethodTest() {assertEquals("{ "result": "mock_hello_MOCK_JAVASTACK"}", testableMock.memberMethod("hello"));verify("innerMethod").withTimes(1);verify("staticMethod").withTimes(1);verify("innerMethod").with("hello");verify("staticMethod").with();}}在以上单元测试类中 , 以 @MockMethod 注解标识的方法都是 Mock 方法 , Mock 了任意方法、成员方法、静态方法 。
使用确实很简单 , 非常灵活 , 功能也确实比动态代理那种要强大 , 一个 @MockMethod 注解走天下 , 可以扔掉其他的 Mock 工具了 。
参考文档:

  • https://github.com/alibaba/testable-mock
  • https://alibaba.github.io/testable-mock/
版权申明:本文系 “Java技术栈” 原创 , 原创实属不易 , 转载、引用本文内容请注明出处 , 禁止抄袭、洗稿 , 请自重 , 尊重他人劳动成果和知识产权 。




推荐阅读