У меня есть класс 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
Как провести единичный тест на стену логики в классе «двигатель» Java без добавления конструкторов только для тестирован ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Поле Autowailired бросает NullPointerException на единичный тест [дублировать]
Anonymous » » в форуме JAVA - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Поле Autowailired бросает NullPointerException на единичный тест [дублировать]
Anonymous » » в форуме JAVA - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-