0

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

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

所以 feedPet 调用 pets eat 方法,eat 方法然后调整 pets 的饥饿度。

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

然后我测试它是否可以使用一个简单的

 assertEquals(p1.getHunger,3);

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

我的问题是,我做的合适吗?我是否正确地测试了我的玩家等级?

真的是测试 pet 的 eat 方法是否有效,但我还需要检查 feedPet 方法是否也适用于玩家。

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

4

2 回答 2

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以涵盖更多案例。

于 2013-05-03T06:09:58.473 回答
1

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

当你写

assertEquals(p1.getHunger,3);

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

于 2013-05-03T05:52:37.870 回答