栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在正在测试的同一类中模拟私有方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在正在测试的同一类中模拟私有方法

给出您要求的答案(使用JMockit的部分模拟):

public class MyClassTest{    @Tested MyClass myClass;    @Test    public void test_MyClass_methodA_enters_if_condition() {        final CustomObject object1 = new CustomObject("input1");        final CustomObject object2 = new CustomObject("input2");        new NonStrictExpectations(myClass) {{ invoke(myClass, "methodB", object1, object2); result = true;        }};        assertEquals("Result", myClass.methodA(object1, object2));    }    @Test    public void test_MyClass_methodA_skips_if_condition() {        final CustomObject object1 = new CustomObject("input1");        final CustomObject object2 = new CustomObject("input2");        new NonStrictExpectations(myClass) {{ invoke(myClass, "methodB", object1, object2); result = false;        }};        assertEquals("Different Result", myClass.methodA(object1, object2));    }}

但是,我 建议这样做。通常,

private
不应模拟方法。而是模拟被测单元的实际外部依赖关系(
CustomObject
在这种情况下):

public class MyTestClass{    @Tested MyClass myClass;    @Mocked CustomObject object1;    @Mocked CustomObject object2;    @Test    public void test_MyClass_methodA_enters_if_condition() {        new NonStrictExpectations() {{ Something thing = new Something(); object1.getSomething(); result = thing; object2.getSomething(); result = thing;        }};        assertEquals("Result", myClass.methodA(object1, object2));    }    @Test    public void test_MyClass_methodA_skips_if_condition() {        new NonStrictExpectations() {{ object1.getSomething(); result = new Something(); object2.getSomething(); result = new Something();        }};        assertEquals("Different Result", myClass.methodA(object1, object2));    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410640.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号