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

Java 在同一对象中测试方法时,如何模拟对象中的方法,java,unit-testing,easymock,Java,Unit Testing,Easymock,我有这样的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();

我有这样的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(),只需测试一个方法,如果它调用类的另一个方法,可以轻松地模拟该方法吗?

一个可行的方法是不模拟
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
    ...
}

要模拟IsEmpty而不获取,您必须将函数委托给另一个类,然后将其注入到一个类中。希望您的实际示例不会像这样琐碎。。。。