我正在学习java测试驱动开发,我被赋予了创建测试代码以通过的任务,但到目前为止,他们都失败了。不幸的是,我搞不清楚我把事情搞砸了。你们能告诉我从哪里开始吗?以下是我迄今为止的测试代码:
public class VirtualPetShelterTest {
private VirtualPetShelter underTest;
@BeforeEach
public void setUp() {
VirtualPetShelter underTest = new VirtualPetShelter();
VirtualPet myPet = new VirtualPet("Bulma", 50, 50, 50);
VirtualPet myPet2 = new VirtualPet("Arasu", 50, 50, 50);
Collection<Object> pets = underTest.pets();
}
//intake//
@Test
public void shouldBeAbleToIntakePetToTheShelter() {
VirtualPet myPet = new VirtualPet("Bulma", 50, 50, 50);
VirtualPet myPet2 = new VirtualPet("Arasu", 50, 50, 50);
int beginningSize = underTest.getAllPets().size();
underTest.addPetToShelter(myPet);
underTest.addPetToShelter(myPet2);
int endingSize = underTest.getAllPets().size();
assertTrue(endingSize > beginningSize);
}
///
public class VirtualPetShelter {
Map<String, VirtualPet> shelter = new HashMap<String, VirtualPet>();
private Map<Object, Object> pets;
public Collection<Object> pets() {
return pets.values();
}
public HashMap <String, VirtualPet> getAllPets() {
return (HashMap<String, VirtualPet>) shelter;
}
public void addPetToShelter(VirtualPet myPet) {
shelter.put(myPet.getName(), myPet);
}
//
public class VirtualPet {
private String name;
private int hungerLevel;
private int thirstLevel;
private int boredomLevel;
public String getName(){
return name;
}
public int getHungerLevel(){
return hungerLevel;
}
public int getThirstLevel(){
return thirstLevel;
}
public int getBoredomLevel(){
return boredomLevel;
}
public VirtualPet(String name, int hungerLevel, int thirstLevel, int boredomLevel) {
this.name = name;
this.hungerLevel = hungerLevel;
this.thirstLevel = thirstLevel;
this.boredomLevel = boredomLevel;
}
1条答案
按热度按时间h4cxqtbf1#
我能找到的唯一问题是你错过了初始化
private VirtualPetShelter underTest
因此,它将引发空指针异常。在int beginningSize = underTest.getAllPets().size();
你的测试类应该是理想的,像这样休息一切看起来不错!