#unit-testing #testing #junit #easymock
#модульное тестирование #тестирование #junit #easymock
Вопрос:
Есть ли способ заставить EasyMock работать с условными обозначениями? В моем методе есть блок if-else, но тест проходит, только если я удаляю условный блок. Это может быть проблемой с JUnit, а не конкретно с EasyMock. У кого-нибудь есть какая-либо информация по этому поводу?
Комментарии:
1. пожалуйста, предоставьте пример кода, без него ваш вопрос очень сложно понять
Ответ №1:
Если я правильно понимаю ваш вопрос, вы хотите возвращать разные значения в зависимости от переменной. Лучший способ сделать это — использовать интерфейс IAnswer.
Допустим, у вас есть класс DAO, получающий цвет из точки:
public class ColorDAO {
public Color getColorFromPoint(Point point) {
//Implementation
}
}
Вы можете создать ответ для этого:
ColorDao colorDao = EasyMock.createMock(ColorDao.class);
EasyMock.expect(colorDao.getColorFromPoint(EasyMock.anyObject(Point.class))).andAnswer(new IAnswer<Color>() {
@Override
public Color answer() throws Throwable {
Point point = (Point) EasyMock.getCurrentArguments()[0];
if (point .getX() > 0.0) {
return Color.BLACK;
}
return Color.YELLOW;
}
});
EasyMock.replay(colorDao);
Надеюсь, это поможет 😉
Ответ №2:
Условие в тесте или тестируемый метод?
Если это есть в тесте, у вас может быть помощник, который настраивает ваши ожидания в зависимости от входных данных, или у вас могут быть ожидания для различных входных данных. Ни то, ни другое не зависит от поведения тестируемого метода.
Если это в тестируемом методе, то способ, которым вы настраиваете ожидания, не зависит от тестируемого метода, и вам нужно будет настроить ожидания для поведения вашего макета, как обычно.