2012-02-21 3 views
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") 

ответ

2

Не забудьте использовать JUnit бегуна:

@RunWith(PowerMockRunner.class) 
@PrepareForTest(Nucleus.class) 
public class YourClassTest { 
+0

+1 для сбора, что я пропустил @ PrepareForTest (Nucleus.class). Я использую TestNG в качестве платформы тестирования, поэтому @ RunWith не помогает мне в данный момент. Я подозреваю, что мне нужно использовать @ ObjectFactory для генерации моего тестового бегуна. Отсутствие некоторых конфигураций там так будет сортировать, что дальше. – radimpe

+0

Найдено, что я пропустил аннотацию: @PrepareForTest (Nucleus.class) Кроме того, необходимо создать ObjectFactory: @ObjectFactory общественного IObjectFactory getObjectFactory() { \t возвращение новый PowerMockObjectFactory(); } – radimpe

+0

Что такое "globalNucleusMock"? Вы заявляете это где-то? – Saurabh

 Смежные вопросы

  • Нет связанных вопросов^_^