Как провести единичный тест на стену логики в классе «двигатель» Java без добавления конструкторов только для тестированJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как провести единичный тест на стену логики в классе «двигатель» Java без добавления конструкторов только для тестирован

Сообщение Anonymous »

У меня есть класс Physicsengine , который инкапсулирует игровой логику. Внутренне он содержит экземпляр Ball в частном поле, а в каждом обновлении он проверяет на стены столкновения и вызовет либо bounchorizontal () или bouncevertical () на мяче. Мой производственный код выглядит примерно так: < /p>
public class PhysicsEngine {
private Ball ball = new Ball( /* ... initial args ... */ );
private int paddleDirection = 0;
// other fields...

public void setPaddleDirection(int dir) {
this.paddleDirection = dir;
}

public void update() {
// 1) Move paddle, ball, etc.
ball.updatePosition();
checkWallCollision();
// 2) Check other collisions that might happend...
}

private void checkWallCollision() {
double x = ball.getPosition().getX();
// suppose WALL_LEFT and WALL_RIGHT are constants
if (x - BALL_RADIUS = WALL_RIGHT) {
ball.bounceHorizontal();
}
double y = ball.getPosition().getY();
if (y - BALL_RADIUS
Я хочу написать модульный тест только для логики настенного столкновения, например,:@Test
void testBallBouncesOffRightWall() {
PhysicsEngine engine = new PhysicsEngine();

// somehow position the internal ball so it is just past the right wall
// engine.ball.position = new Point2D(WALL_RIGHT - BALL_RADIUS + 1, 100);

engine.update();

// verify that bounceHorizontal() was called exactly once on the ball
// verify(...);
}
< /code>
Проблема: < /p>

PhysicsEngine не подвергает мяч через конструктор или сеттер
(это частное поле). < /li>
Я читал, что добавление конструктора «opton-test-test» или для модификации, предпочитаемой не для инъекции. Производственный код вообще просто для того, чтобы облегчить тестирование. Bounce? Я бы предпочел разоблачить частные поля и не добавлять конструкторы только для тестирования - какую технику (ы) я могу использовать для введения макета или манипулирования частным полем во время тестирования?

Подробнее здесь: https://stackoverflow.com/questions/796 ... -adding-te
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»