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