0
public abstract class A{
    public int methodInA(String a){
         return 0;
    }
}

public class B extends A{
    String a = "ANYTHING";
    public void main(){
        int b = super.methodInA(a);
    }
}

此代码只是一个示例。我正在尝试测试B并希望methodINA使用来自B. 我可以用 EasyMock 做到这一点吗?如果可以,怎么做?

4

1 回答 1

-2

这不是模拟的目的,您应该模拟该方法main,但这会使测试变得毫无意义,因为您不会仅测试 EasyMock 的实际代码。

当您想要控制被测对象使用的对象的行为时,可以使用 EasyMock(以及一般的模拟)。

在您的情况下,您唯一的选择是在测试中对 B 进行子类化,例如:

@Test
public void testSomething()
{
  final int expected = 5;

  B b = new B()
  {
    public int methodInA(String a)
    {
      return expected;
    }
  };

  b.main();

  //Add assertions here.
}
于 2013-06-04T16:39:31.530 回答