【问题标题】:ExpectNew is not being called twice for same classExpectNew 没有为同一个班级被调用两次
【发布时间】:2020-11-12 05:23:05
【问题描述】:

我正在使用 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 行时,它成功了,没有任何问题。

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

【问题讨论】:

  • 能否给个完整的测试用例。使用@Prepare 和错误

标签: java mocking powermock easymock


【解决方案1】:

replay() 方法不应在同一测试方法中为同一类调用两次。

所以:-

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

这件事奏效了。

同样建议 mockStatic() 函数。

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

PowerMock.mockStatic(DataProvider.class);

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

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多