加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在同一对象中测试方法时如何模拟对象中的方法

发布时间:2020-12-14 19:24:21 所属栏目:Java 来源:网络整理
导读:我有这样的 java代码: public class A { public int get() { // many codes String s = new String(); //... int n = 5; return isEmpty(s) ? n : -1; } public boolean isEmpty(String s) { return s.isEmpty(); }} 现在我想只测试get(),我不想同样测试isE
我有这样的 java代码:
public class A {
    public int get() {
        // many codes
        String s = new String();
        //...
        int n = 5;
        return isEmpty(s) ? n : -1;
    }
    public boolean isEmpty(String s) {
        return s.isEmpty();
    }
}

现在我想只测试get(),我不想同样测试isEmpty(),所以我想模拟isEmpty(),只是测试一个方法,如果它调用该类的另一个方法,可以easymock mock方法?

解决方法

一个可行的方法是不要模拟A并做类似的事情
public class TestableA extends A
{
    @Override
    public boolean isEmpty( String s )
    {
         // "mock" impl goes here,eg.:
         return s;
    }
}

而是用TestableA来编写单元测试.您甚至可以在@Before方法中创建它:

public class UnitTest
{
    private A a; // note: A,not TestableA!

    @Before
    public void setUp()
    {
        this.a = new A() 
        {
            @Override
            public boolean isEmpty( String s )
            ...
        }
    }

    @Test
    ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读