java - JUnit 测试 - 类调用其他类中的方法

标签 java class unit-testing junit

我有一个类播放器,它有一个方法

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

因此 feedPet 调用宠物的 eat 方法,然后 eat 方法会调整宠物的饥饿程度。

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

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

 assertEquals(p1.getHunger,3);

p1 是我在播放器测试用例中创建的宠物对象。

我的问题是,我现在做的事情合适吗?我是否正确测试了我的玩家类别?

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

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

最佳答案

假设你的测试看起来像这样

@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 类进行单独的测试以涵盖更多情况。

关于java - JUnit 测试 - 类调用其他类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16352324/

相关文章:

java - 从 MenuItem 进行黑莓屏幕导航

javascript - Google 云端硬盘脚本不起作用,

php - WooCommerce - 使用 PHP 代码更改订单状态

c# - 如何修复此错误 : Cant remove object from a list?

unit-testing - 如何使用 Gradle 只运行一个单元测试类

c# - 如何使用 nunit 约束获得格式正确的测试结果

JavaFX:事件 OnMouseExited 工作不正确

java - 对于 List<String> 我想添加第一个默认值作为 ALL

java - 如何在另一个文件、不同目录中使用 jar 文件中的类?

java - 每个 Java 域类都应该实现一个接口(interface)吗?