Тест JUnit для метода @Override

У меня есть программа, содержащая следующий класс:

  public class Plane implements Flyable
{
    private final int numberOfEngines;
    private final String model;

    public Plane(int engines, String m)
    {
        numberOfEngines = engines;
        model = m;
    }

    @Override
    public String toString()
    {
        return String.format("%s with %d engines", model, numberOfEngines);
    }

    @Override
    public void launch() {
        System.out.println("Rolling until take-off");

    }

    @Override
    public void land() {
        System.out.println("Rolling to a stop");

    }
}

И в настоящее время я пытаюсь написать тесты JUnit для методов toString, launch и land. Это то, что я до сих пор:

class PlaneTest {

    @Test
    void testToString() {
        assertEquals("Boing with 4 engines", Plane.this.toString());
    }

    @Test
    void testLaunch() {
        fail("Not yet implemented");
    }

    @Test
    void testLand() {
        fail("Not yet implemented");
    }

Моя проблема в том, что я не могу понять, как правильно вызывать метод toString в классе Plane. Единственный способ, которым Eclipse показывает мне метод toString - это «this» перед ним, однако я не могу понять, как создать экземпляр Plane для его использования. Я потратил слишком много времени, пытаясь обернуть мою голову вокруг этого, так что, если кто-то может помочь мне здесь, это будет очень ценно. Заранее спасибо!

Всего 1 ответ


Вы должны вызывать его с экземпляром Plan потому что toString() не является статическим и потому что вам нужно инициализировать членов класса.

@Test
void testToString() {
    assertEquals("Boeing with 4 engines", new Plane(4, "Boeing").toString());
}

Есть идеи?

10000