0
Я пытаюсь проверить следующий фрагмент кода:Использование PowerMock для получения ATG Nucleus в результатах тестирования в NPE
GSARepository productCatalog = (GSARepository) Nucleus.getGlobalNucleus().resolveName("/atg/commerce/catalog/ProductCatalog");
for (RepositoryItem orderItem : orderItems) {
String product = (String) orderItem.getPropertyValue(PropertyNameConstants.PRODUCTID);
if (!ProductUtils.isSpecial(product, productCatalog)) {
isSpecial = false;
break;
}
}
явно Nucleus.getGlobalNucleus() является статическим.
Согласно документации, я должен быть в состоянии использовать:
PowerMockito.mockStatic(Nucleus.class);
PowerMockito.when(Nucleus.getGlobalNucleus()).thenReturn(globalNucleusMock);
PowerMockito.when(globalNucleusMock.resolveName("/atg/commerce/catalog/ProductCatalog");
Eitherway, я все еще получаю NullPointer, когда я звоню:
Nucleus.getGlobalNucleus().resolveName("/atg/commerce/catalog/ProductCatalog")
+1 для сбора, что я пропустил @ PrepareForTest (Nucleus.class). Я использую TestNG в качестве платформы тестирования, поэтому @ RunWith не помогает мне в данный момент. Я подозреваю, что мне нужно использовать @ ObjectFactory для генерации моего тестового бегуна. Отсутствие некоторых конфигураций там так будет сортировать, что дальше. – radimpe
Найдено, что я пропустил аннотацию: @PrepareForTest (Nucleus.class) Кроме того, необходимо создать ObjectFactory: @ObjectFactory общественного IObjectFactory getObjectFactory() { \t возвращение новый PowerMockObjectFactory(); } – radimpe
Что такое "globalNucleusMock"? Вы заявляете это где-то? – Saurabh