迁移到 java 11 时注释不起作用

annotations not working when migrating to java 11

我能做些什么来让 @Mock 和 @InjectMocks 注释与 java 11 一起工作吗?

不确定为什么这在 Java7 中对您有用,但您显然以错误的方式使用了 @InjectMocks

@InjectMocks
private ByVehicleIdRequest request = new ByVehicleIdRequest(
   locale,
   additionalInfo,
   permissions,
   switches,
   vehicleId, 
   aftermarketDescriptions, 
   enhancedStringMatchingSettings);

如果你使用 Mockito runner(或 JUnit5 中的扩展),你不应该自己初始化字段:

@InjectMocks
private ByVehicleIdRequest request;

MockitoJUnitRunner documentation所述:

Mocks are initialized before each test method.

如果您在 request 对象的字段初始化中使用模拟值,您会将尚未初始化的值传递给构造函数,因此您会观察到空值。

备注

答案参考问题版本 3。