我没有问题的答案,但我认为是因为它只有无效的方法,这些方法无论如何也只是在计数。还是有更好的解释?
我还需要提出改进建议。

public class PlayingField implements Security{
    private int kidsCount;

    @Override
    public void addPerson() {
        kidsCount++;
        soundAlarm();

    }

    @Override
    public void removePerson() {
        kidsCount--;

    }

    @Override
    public int getPersonCount() {
        return kidsCount;
    }

    @Override
    public void soundAlarm() {
        if (kidsCount> 50) {
            System.out.println("cant add a kid to the PlayingField");
            kidsCount--;
        }
    }

}


这些方法是从另一个类使用以下方法调用的:

public class KidsShop extends FashionShop {

    private PlayingField playingField;

    public KidsShop(String name, int area, int rent) {
        super(name, area, rent);
        this.playingField = new PlayingField();
    }
    public void addKid() {
        playingField.addPerson();
    }
    public void pickUpKid() {
        playingField.removePerson();
    }
    public int getNumberOfKids() {
        return playingField.getPersonCount();
    }

最佳答案

我认为PlayingField很难测试,因为它只能处理一个私有字段,无法正确模拟。

正如注释中提到的十四行诗一样,除soundAlarm()以外的所有方法都可以测试。

我的改进建议是将soundAlarm()设为私有,因为它仅由类本身调用。甚至更好:将检查逻辑从soundAlarm()移到addPerson方法。我认为在添加另一个孩子之前检查孩子的数量会更好,因此您无需调用减量kidsCount

10-05 18:51