Java EasyMock with EasyMockSupport:无法在@Before中使用模拟

Java EasyMock with EasyMockSupport:无法在@Before中使用模拟,java,junit,easymock,Java,Junit,Easymock,我想对我的timeServiceMock设置一些常见的期望值,但在before方法中它仍然为空。有没有办法让它在每次测试中都不需要调用before() @RunWith(EasyMockRunner.class) public class MyTest extends EasyMockSupport { ...@TestSubject and so on @Mock private TimeService timeServiceMock; @Before public

我想对我的timeServiceMock设置一些常见的期望值,但在before方法中它仍然为空。有没有办法让它在每次测试中都不需要调用before()

@RunWith(EasyMockRunner.class)
public class MyTest extends EasyMockSupport {

  ...@TestSubject and so on

  @Mock
  private TimeService timeServiceMock;

  @Before
  public void before() {

    System.out.println(this.timeServiceMock);
  }

   ...tests
}

我遗漏了什么吗?

看起来EasyMockRunner只在@Test中创建和注入模拟

因此,如果您想在@Before中使用它,请从
TimeService
中删除@Mock注释,并在@Before中自己创建Mock。然后您必须将mock自己注入@TestSubject

比如说:

@RunWith(EasyMockRunner.class)
public class MyTest extends EasyMockSupport {

  @TestSubject and so on
  Foo testSubject = ...

  private TimeService timeServiceMock;

  @Before
  public void before() {
   this.timeServiceMock = createMock(TimeService.class);
    ...
  }

   @Test
   public void mytest(){
     testSubject.setTimeService(timeServiceMock);
     ...
   }
}

嗯,这正是您希望使用EasyMockSupport从我的代码中删除的内容。。。