Mockito升级导致空指针问题



我们从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);
  }

一旦下载控制器中引用了accountManager,它就会抛出一个npe。这在1.8.5中起到了作用。

注入的mock失败的原因是因为它们是静态字段。静态字段通常是为保持不变的字段保留的,并且在测试之间不会发生变化,并且有时实例化成本很高。这与实例字段相反,在实例字段中,为每个测试方法创建一个新的测试类实例(从而使其实例字段"重置")。Mockito似乎坚持这一哲学,并没有试图实例化静态字段。

修复方法是使字段非静态,或者如果需要它们是静态的,则在BeforeClass方法中设置它们。

您可以查看http://code.google.com/p/mockito/issues/detail?id=327在Mockito问题登记册上。如果这是你遇到的问题,那么它已经被修复,并将出现在Mockito的1.9.1版本中。如果您认为您的问题与本次不同,请访问http://code.google.com/p/mockito/issues把它举起来,这样它就可以固定了。

相关内容

  • 没有找到相关文章

最新更新