1

此测试运行但失败。不知道为什么?有一个长度为 1 的 Submarine 类。

@Test   
public void testShipConstructor() {
    assertTrue(Submarine.length == 1);      
}

这是该类的代码:

public abstract class Ship {

    private int size;
    public static int length;

    protected Ship(int size, String type, String shortForm) {
        this.size = size;
        this.setType(type);
        this.shortForm = shortForm;
    }

    public static void setLength(int length) {
    }

    public int getLength() {
        return length;
    }

    int getSize() {
        return size;
    }
}

public class Submarine extends Ship {

    private final static int SIZE = 1;

    /**
     * * Constructor, sets inherited length variable.
     */
    public Submarine() {
        super(SIZE, "Submarine", "#");
    }
}
4

2 回答 2

6

您是否在某处实例化了 Ship 类?我假设构造函数采用值 n 来表示长度?

假设public class Submarine extends Ship

和一个Submarine(int size){}或的构造函数Ship(int ship){}

你的测试应该包括:

int desiredSize = 1;
Submarine mySub = new Submarine(desiredSize);
assertEquals(mySub.getSize(), desiredSize);
于 2013-03-30T13:00:03.420 回答
1

Submarine 是类名吗?在那种情况下,我认为长度是静态的,因为您以静态方式访问它。所以你应该在构造函数之外初始化长度。此外,您的测试不会测试构造函数。

于 2013-03-30T13:06:14.543 回答