2016-03-16 2 views
0
public String processName() throws Exception { 

    String name = dbManager.getName(); // getname 
    String connection = dbManager.getConnection(); 
    String name2 = dbManager.getName(); 
    Mydata mydata = new Mydata(); 
    String getData = mydata.getGetData(); 
    List<String> list = dbManager.getList(); 
    return getData.toLowerCase(); 
} 

private class Mydata { 
    String getData = "test"; 

    public String getGetData() { 
     return getData; 
    } 
    public void setGetData(String getData) { 
     this.getData = getData; 
    } 
} 
+4

не ожидается проверить 'private' метод. Вы должны написать тест для 'public' методов и поставить' проверку' на mocks, если они вызываются в любом из ваших 'private' методов. – user2004685

+0

мой вопрос: я хочу издеваться над публичным методом частного класса, возможно ли это? –

+0

Да, вы могли бы издеваться над ним, но в целом, поскольку «частные» классы похожи на черные ящики, вы должны избегать их написания. – user2004685

ответ

0

В общем, вы не должны использовать классы private и избегать написания тестов для них, поскольку они должны быть black-boxes для внешнего мира.

Но все же, если вы используете один и хотите, чтобы дразнить его, то здесь, как вы можете сделать это с помощью JMockit:

Object ins = Deencapsulation.newInnerInstance("Mydata", outerClass.class, (Object[]) null); 

я использовал null, потому что вы не определили любой конструктор на вашем внутреннем частном классе ,

Вот документация, если вы заинтересованы:

mockit.Deencapsulation.newInnerInstance Object (String innerClassSimpleName, объект outerClassInstance, объект ... nonNullArgs)

же, как и newInstance (String , Class [], Object), но для , создающего экземпляр внутреннего не доступного класса какого-либо другого класса, и , где все остальные (если есть) аргументы инициализации известны как непустые.

Параметры:

innerClassSimpleName: простое имя внутреннего класса, то есть, часть после символа "$" в своем полном наименовании

outerClassInstance: внешний класс экземпляр, к которому будет принадлежать экземпляр внутреннего класса

nonNullArgs: нулевые или более ненулевые значения параметров для вызова; если необходимо передать нулевое значение, объект класса для соответствующего типа параметра должен быть принят вместо типа, к которому возвращаемый экземпляр должен быть назначаемый

Возвращает: вновь созданный экземпляр указанного внутреннего класса, инициализируется> с заданными аргументами

броски: IllegalArgumentException - если пустая ссылка была предоставлена ​​для параметра

+0

но как я могу издеваться над этим методом String getData = mydata.getGetData(); я попытался, но он не издевается над этой строкой Mydata mydata = new Mydata(); –

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