alibaba / testable-mock

换种思路写Mock,让单元测试更简单
https://alibaba.github.io/testable-mock/
MIT License
1.83k stars 310 forks source link

不支持在父类Test里直接使用MOCK_CONTEXT #230

Closed liranGG closed 2 years ago

liranGG commented 3 years ago

import static com.alibaba.testable.core.tool.TestableTool.MOCK_CONTEXT;

public class TestFather {

public void commonTest(Map mockContext) {
    mockContext.put("11", "22");
}

public void commonTest() {
    MOCK_CONTEXT.put("11", "22");
}

}

public class TestSon extends TestFather {

public static class Mock {

}

@Test
public void testSomething() {
    commonTest(MOCK_CONTEXT);

    // 父类无法直接使用MOCK_CONTEXT,报空指针,必须传参才行或者在本类通用方法里可直接使用
    // commonTest();
}

}

如上所示,我把单测通用代码提炼到父类中,无法直接使用MOCK_CONTEXT,只能把通用方法放在本类里才能直接使用,或者传参。和上一个Issues一样,debug全程MOCK_CONTEXT显示null。望尽快修复这两个Issues,这样编写代码更方便,不用再传参传来传去。能不能修请早点告知我一声,别不吱声修好了突然回复我。

linfan commented 3 years ago

Debug全程MOCK_CONTEXT显示null是因为IDE在Debug过程里展示的依然是发生动态替换前的代码,同时由于动态替换需要扫描字节码,有一定开销,默认只会对测试类进行自动处理。

解法同前一个问题,使用MockContextUtil.parameters()调用替代MOCK_CONTEXT变量即可。