5

我有这样的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(),所以我想mock isEmpty(),只测试一个方法,如果它调用了该类的另一个方法,可以easymock mock方法?

4

1 回答 1

3

一种可行的方法是不要模拟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
    ...
}
于 2012-12-03T13:34:04.977 回答