Java 在同一对象中测试方法时,如何模拟对象中的方法
我有这样的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();
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而不获取,您必须将函数委托给另一个类,然后将其注入到一个类中。希望您的实际示例不会像这样琐碎。。。。