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可以嘲笑这个方法吗?
答案 0 :(得分: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
...
}