ExpectNew 没有被调用两次相同 class

ExpectNew is not being called twice for same class

我正在使用 EasyMock 编写 junit 测试。所以对于一个对象 :-

DataProvider dataProvider = new DataProvider(Data data , Provider provider);

所以我不得不模拟两次行为,就像这样:-

@Mock
DataProvider dataProvider1 , dataProvider2;
   1. PowerMock.expectNew(DataProvider.class, dataRequest, provider1).thenReturn(mockDataProvider1);
   2. PowerMock.replay(DataProvider.class);
   3. PowerMock.expectNew(DataProvider.class, dataRequest, provider2).thneReturn(mockDataProvider2);
   4. PowerMock.replay(DataProvider.class);

但是当我试图执行这个时。这是在第 2 行抛出错误。 当我删除第 3 行和第 4 行时,它毫无问题地成功了。

而且我需要在我的行为中使用它两次。有人可以帮忙吗?

replay() 方法不应该在相同的测试方法中为相同的 class 调用两次。

所以 :-

   1. PowerMock.expectNew(DataProvider.class, dataRequest, provider1).thenReturn(mockDataProvider1);
   3. PowerMock.expectNew(DataProvider.class, dataRequest, provider2).thneReturn(mockDataProvider2);
   4. PowerMock.replay(DataProvider.class);

这东西奏效了。

对 mockStatic() 函数也有同样的建议。

人们还应该记住在一个测试方法中只对 class 使用一次 mockStatic() 函数。 所以 :-

PowerMock.mockStatic(DataProvider.class);

这应该在测试方法中只使用一次。