我有这样的
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 ... }