Я просмотрел другие вопросы, связанные с перечислением, и по-прежнему не могу понять это.Java-тестирование enum
У меня есть Позиция Enum:
public enum Position
{
LEFT, MIDDLE, RIGHT;
}
и класс Tower:
public class Tower extends LinkedStack<Disc>
{
private Position position;
/**
* Tower implementation
*
* @param location the location of the tower
*/
public Tower(Position location)
{
super();
this.position = location;
}
/**
* Position of the tower
*
* @return position the position of the tower
*/
public Position position()
{
return position;
}
/**
* Push method
*
* @param disc disc to be pushed
* @throws IllegalStateException if the disc cannot be pushed
*/
@Override
public void push(Disc disc)
{
Disc last = this.peek();
if (this.isEmpty() || (last.compareTo(disc)) == 1)
{
super.push(disc);
}
else
{
throw new IllegalStateException();
}
}
}
Тест на башне:
private Position LEFT;
private Position MIDDLE;
private Position RIGHT;
private Tower t1;
private Tower t2;
private Tower t3;
/**
*
*/
@Before
public void setUp()
{
LEFT = Position.LEFT;
MIDDLE = Position.MIDDLE;
RIGHT = Position.RIGHT;
t1 = new Tower(LEFT);
t2 = new Tower(MIDDLE);
t3 = new Tower(RIGHT);
}
/**
* Test method for Tower(Position).
*/
@Test
public final void testTower()
{
Tower t4 = new Tower(LEFT);
}
/**
* Test method for position().
*/
@Test
public final void testPosition()
{
assertEquals(LEFT, t1.position());
assertEquals(MIDDLE, t2.position());
assertEquals(RIGHT, t3.position());
assertFalse(t3.position() == LEFT);
}
Есть причина, почему эти утверждения возвращаются null для позиции вместо LEFT, MIDDLE, RIGHT?
Вы сделали 'место = позиция;', вы хотите 'положение = местоположение;'. Еще лучше: 'this.position = location;'. – Kenney
'assertEquals', который сравнивает' String' с 'enum', всегда будет возвращать' false'. Используйте 'assertEquals (Position.LEFT, t1.position());' и т. Д. Вместо этого. –
'assertFalse (t3.position() == LEFT);' может не работать, поскольку 'LEFT' определяется внутри метода' setUp'. Вы должны изменить 'LEFT' на' Position.LEFT' – uthavaakkarai