gpt4 book ai didi

java - Mockito升级导致空指针问题

转载 作者:行者123 更新时间:2023-12-01 05:42:12 26 4
gpt4 key购买 nike

我们从 mockito-all-1.8.5.jar 升级到 mockito-all-1.9.0.jar,现在在对被模拟的类使用注释时会看到空指针。这是一个例子:

  @Mock
private static IAccountManager accountManager;
@Mock
private static IBusinessUnitManager businessUnitManager;
private static Gson parser;

@InjectMocks
private static DownloadController downloadController;

@BeforeClass
public static void setUpBeforeClass() throws Exception {
parser = new Gson();

downloadController = new DownloadController(accountManager,
businessUnitManager, parser);
}

@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
Mockito.reset(accountManager, businessUnitManager);
}

一旦在下载 Controller 中引用了 accountManager,它就会抛出一个 npe。这在 1.8.5 中有效。

最佳答案

注入(inject)的模拟失败的原因是因为它们是静态字段。静态字段通常保留用于保持不变且不会因测试而改变的字段,并且有时实例化的成本很高。这与实例字段相反,其中为每个测试方法创建测试类的新实例(因此将其实例字段“重置”)。看起来 Mockito 坚持这一理念,并不试图实例化静态字段。

解决方法是使您的字段成为非静态的,或者如果您需要它们是静态的,则在 BeforeClass 方法中设置它们。

关于java - Mockito升级导致空指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9910420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com