The root cause seems to be MigrateVmCommandTest and its relation to MigrateVmCommand.
A common misconception is that if an object is annotated with @InjectMocks, Mockito will inject its @Mocks and @Spys to fields annotated with @Inject.
This is, as noted, not correct - Mockito will attempt to injcet its mocks to *ALL* the fields, regardless of annotations.
And here's where things start getting funky.
Since the new field you introduced is an Object, any mock would be a possible match for it. If more than one mock fits the field (as you have in the test - dbFacade and vmValidator), Mockito silently skips injecting it, and leaves it null (not sure if this is a bug or an intentional ugly behavior) - need to look into this further.
Even worse, this failure breaks the mocking sequence, so the mocked object isn't spied. When you attempt to stub it's behavior (e.g., with doReturn, as the first line of testValidationFailsWhenVmHasDisksPluggedWithScsiReservation does), it will fail with a NotAMockException). From there on, it's all down hill.
The good news is that this test doesn't really need to inject mocks, so just removing that annotation solves the issue. I've posted a patch [1], please review it.
I'll also organize an MCVE reproducer and report a bug against mockito, and we'll see if there's any chance to get it solved any time soon.
-Allon