JUnit Test - Class调用其他类中的方法

时间:2013-05-03 05:40:23

标签: java class unit-testing junit

我有一个具有方法的类播放器

 feedPet(Pet p1, Food f1){
 p1.eat(f1) 
 }

所以feedPet调用宠物吃法,然后吃法调整宠物的饥饿程度。

为了测试这个,我需要在我的jUnit测试用例中创建一个播放器和食物对象。

然后我测试它是否使用简单的

 assertEquals(p1.getHunger,3);

p1是我在玩家测试用例中创建的宠物对象。

我的问题是,我正在做的是什么?我正在测试我的播放器类吗?

真的测试宠物的吃法是否有效,但我还需要检查feedPet方法是否也适用于播放器。

非常感谢任何想法或建议。

2 个答案:

答案 0 :(得分:3)

假设您的测试看起来像那样

@Test
public void player_should_feed_a_pet() {
    Food f1 = givenFoodWithHungerReductionOf(1);
    Pet p1 = givenPetWithHunger(4);
    player.feedPet(p1, f1);
    assertEquals(p1.getHunger(), 3);
}

这是一个很好的考验。您并未真正测试Pet.eat()方法,而是PlayerPet之间的正确互动。

您可能还需要对Pet课程进行单独测试以涵盖更多案例。

答案 1 :(得分:1)

理想情况下,您应该创建两个测试文件 - 一个用于测试其eat方法的Pet类,另一个用于测试feedPet方法的玩家类。

写作时

assertEquals(p1.getHunger,3);

我希望饥饿是在宠物类的eat方法下设置的实例变量,根据你的预期是3.如果是这样的话,你就是在正确的道路上