2013-06-04 3 views
0

Я использую PowerMock/EasyMock и хочу проверить класс, который имеет личное перечисление, например:Дразнящих частное перечисление внутри испытания класса

public class GenerateMove { 

    private Command current; 
    private enum Command { 
    GO, BACK, TURN 
    } 


    public move() { 
    if (Command.GO.equals(current)) { 
    // do something 
    } 
    } 

} 

Я не может дразнить перечисление команд. Есть ли это сделать? В противном случае, как я могу проверить код // do something внутри метода move()?

Спасибо.

+0

Почему бы не перечислить 'Command' как« внешнее »перечисление и заставить его генерировать экземпляры« GenerateMove »? перечисления могут иметь методы и т. д. ... – fge

ответ

3

Как правило, частные поля относятся к внутренним функциям или внутреннему состоянию класса - по сути, это то, что вы собираетесь тестировать.

Переходя в command, вы указываете, что можете изменить состояние объекта, и вам нужно проверить все возможные состояния, которые могут быть переданы. Однако, имея это перечисление private, вы не получаете , так как он не находится ни в каком другом объеме.

Если вы не хотите, чтобы это перечисление подвергаться слишком далеко, вы можете изменить его объем для упаковки и частного (путем удаления private), и ваш метод испытания в том же пути к классам. Таким образом, ваш метод тестирования сможет использовать перечисление, и вы сможете проверить свои результаты в отношении того, что вы ему передаете.

Нет никаких оснований издеваться над этим - вы должны передать реальные данные и проверить все случаи этого перечисления, чтобы быть тщательными.

0

Я не вижу необходимости издеваться над перечислением. Вы можете напрямую использовать членов перечисления. Чтобы проверить свой метод перемещения, все зависит от того, какой у вас код. Mocking поможет вам, если у вас есть внешний объект зависимого класса.

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