Только начинаю постигать полезности тестирования. Перечитал много ответов здесь и в гугле в целом, но ответа не нашел.
Имеется метод (кто ради интереса писал игры на JavaRush, тому будет знакомо):
public void move() {
if (super.x < RoadManager.LEFT_BORDER)
x = RoadManager.LEFT_BORDER;
else if (super.x > RoadManager.RIGHT_BORDER - width)
x = RoadManager.RIGHT_BORDER - width;
Как видите, имеется 2 условия. Насколько я понял, под if и else if нужно писать два разных теста. Однако никак не могу понять, как это протестировать с помощью JUnit.
UPD: Пробовал сделать это в два действия (для if): сперва assertTrue проверил правдивость условия, далее уже assertEquals сравнил ожидаемое значение с актуальным, но это неверно :(
Если вы хотите unit-тесты, то вам нужно проверять не результат логических выражений в условии внутри функции, а результат выполнения самой функции. Вы, вероятно, неправильно поняли суть юнит-тестов. А она в том, что мы проверяем работу всей функции, а не того, что происходит внутри неё.
Пример того, что можно сделать вам для проведения теста. Задаем какое-то значение для super.x, задаем RoadManager.LEFT_BORDER и RoadManager.RIGHT_BORDER. Делаем это всё ручками через сеттеры, если они у вас определены, либо другим способом, который может задать значения так, чтобы мы знали их точно(или хотя бы ожидали определенное значение переменной в начале функции. Соответственно, мы можем посчитать, что будет в if'ах и можем предсказать, что должно произойти в результате выполнения функции.
Далее, мы вызываем нашу функцию, затем assertEquals, в котором пишем ожидаемое значение и геттер для переменной x, которая должна меняться в результате выполнения функции. Делается это всё не в том же классе, а в отдельном классе, который обычно помещается в папку 'src'--'test', структура которой далее соответствует папке 'src'--'main'
И ещё, что, по-вашему, должно произойти, если
super.x >= RoadManager.LEFT_BORDER & super.x <= RoadManager.RIGHT_BORDER
? Вы учитываете это при написании теста?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Не получается задать относительный путьПосле создания артефакта (IDEA) при открытии сессии выводит ошибку: javax
В вузе задали задачу на java, подскажите как её решить? Или может какие-нибудь обучающие материалы о том, как решать подобныеДалее текст на английском:
мне нужно что бы при нажатии на кнопку JButton открывалась нужая JFrame например у меня есть окно с кнопкой я нажимаю на кнопку и открыается нужная...