首页 > 解决方案 > @Override 方法的 JUnit 测试

问题描述

我有一个包含以下类的程序:

  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");

    }
}

我目前正在尝试为 toString、launch 和 land 方法编写 JUnit 测试。这是我到目前为止所拥有的:

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");
    }

我的问题是我一生都无法弄清楚如何在 Plane 类中正确调用 toString 方法。Eclipse 向我展示 toString 方法的唯一方法是在它前面加上“this”,但是我不知道如何创建一个 Plane 实例供它使用。我花了太多时间试图解决这个问题,所以如果有人可以在这里帮助我,我将不胜感激。先感谢您!

标签: javaunit-testingjunitinterface

解决方案


您需要使用Plan实例调用它,因为toString()它不是静态的,并且您需要初始化类成员。

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

推荐阅读