2013-08-25 1 views
0

Я пытаюсь проверить класс, где он имеет некоторые тесно связанные зависимости. Я думаю использовать MockClassLoader в PowerMock, чтобы издеваться над определением класса самой зависимости.Как использовать MockClassLoader?

Любая идея использования MockClassLoader.

ответ

2

Я не думаю, что MockClassLoader предполагается использовать непосредственно в тестовом коде, он больше похож на деталь реализации PowerMock. Вместо этого ознакомьтесь с политиками PowerMock. Реализация макетной политики может, например, подавлять некоторые методы, подавлять статические инициализаторы или вызовы метода перехвата для каждого класса. Предположим, у вас есть тесно связанные код, как это:

public class Holder {  
    private final DataObject dataObject = new DataObject(); 

    public DataObject getData() { 
    return dataObject; 
    } 
} 

Можно создать политику для управления DataObjects:

public class MyMockPolicy implements PowerMockPolicy { 

    public void applyClassLoadingPolicy(MockPolicyClassLoadingSettings settings) { 
    settings.addFullyQualifiedNamesOfClassesToLoadByMockClassloader(Holder.class.getName()); 
    } 

    public void applyInterceptionPolicy(MockPolicyInterceptionSettings settings) { 
    Method getDataMethod = Whitebox.getMethod(Holder.class); 
    DataObject dataObject = new DataObject(); //custom object 
    settings.addSubtituteReturnValue(getDataMethod, dataObject);  
    } 

}

и применять его с аннотациями

@RunWith(PowerMockRunner.class) 
@MockPolicy(MyMockPolicy.class) 
public class DependencyUserTest { 
    // test methods 
} 
+0

Хорошо, отлично. Могу ли я использовать его для создания пользовательского объекта dataObject. Но, чтобы убедиться, что у меня не может быть общедоступного метода доступа, бизнес-логика внутри класса будет напрямую использовать dataObject. –

+0

Удивительно, это действительно сработало. –

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