致力于测试驱动的开发项目(java中的虚拟宠物收容所),但我无法通过测试用尽所有其他选择

vwoqyblh  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(266)

我正在学习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;

    }
h4cxqtbf

h4cxqtbf1#

我能找到的唯一问题是你错过了初始化 private VirtualPetShelter underTest 因此,它将引发空指针异常。在 int beginningSize = underTest.getAllPets().size(); 你的测试类应该是理想的,像这样休息一切看起来不错!

public class VirtualPetShelterTest {

    private VirtualPetShelter underTest = new VirtualPetShelter();

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

相关问题