0
我想測試下面的代碼位:)使用PowerMock獲得ATG核測試結果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,我仍然得到一個空指針,當我打電話:
Nucleus.getGlobalNucleus().resolveName("/atg/commerce/catalog/ProductCatalog")
+1,用於提取我誤以爲@ PrepareForTest(Nucleus.class)。我使用TestNG作爲我的測試框架,所以@ RunWith目前無法幫助我。我懷疑我需要使用@ObjectFactory來生成我的測試運行器。在那裏丟失了一些配置,所以下一步將對此進行整理。 – radimpe 2012-02-21 09:00:04
發現我錯過了註解: @PrepareForTest(Nucleus.class) 此外,還需要創建的ObjectFactory: @ObjectFactory 公共IObjectFactory getObjectFactory(){ \t回報新PowerMockObjectFactory(); } – radimpe 2012-02-21 09:52:00
什麼是「globalNucleusMock」這裏?你有沒有在某個地方宣佈它? – Saurabh 2013-07-08 10:05:01