【问题标题】:How to test a method in Junit5如何在 Junit5 中测试方法
【发布时间】:2019-10-14 07:38:03
【问题描述】:

我必须在我的一个类中做一个 junit 测试方法,但我从来没有做过这样的事情,互联网上的所有信息都是用于简单的计算测试。我不知道如何为我的方法实现测试,老实说,我尝试了布尔检查,但它并没有真正帮助我,也许这里有人可以给我指点。

我看了一些关于 Junit 的教程,但没有帮助我,因为它们是简单的方法。我尝试了布尔检查,但无法正常工作

public void takeDamage(int damage) {

    if (!todelete) {
        damage = damage / damagereduction;
        currentLife -= damage;
    }
    if (currentLife <= 0) {
        todelete = true;
        return;
    }
    if (currentLife >= 100) {
        sprite.setTexture(skins[0]);
        currentLife = 100;
        return;
    }
    int life = currentLife / 20;
    sprite.setTexture(skins[life]);
}

所以这个方法就是根据他剩余的生命值将我的角色的图片更改为设定的图片。我不知道如何测试这种方法。也许有人可以给我指点。

【问题讨论】:

  • 这个论坛的话题太宽泛了。您可以尝试在线查找示例。

标签: java junit5


【解决方案1】:

使用您提供给我们的信息的简单测试看起来像这样。

您需要调整您期望的方法、类名和实际值。

@Test
public void testDamage() {
  MyPersonClass myPerson = new MyPersonClass();
  myPerson.takeDamage(50);
  int expectedRemainingLife = 80;
  Texture expectedPicture = new Texture(); // You need to load the correct picture here
  assertEquals(expectedRemainingLife, myPerson.getLife());
  assertEquals(expectedPicture, myPerson.getPicture());
}

如果纹理存储在其他地方,您也需要获取持有对象,以验证纹理。

【讨论】:

  • 感谢您的回答,我必须测试完整的方法还是可以测试一部分?我试图只测试生活,但它给了我一个错误,即使计算是正确的
  • 那么你就知道,有些地方不对劲。这就是测试的目的;) 您是否在 getter 方法中返回了正确的值?
  • 顺便说一句。这在软件开发中有一个名字。它被称为TDD,测试驱动开发。您首先创建测试,然后开始实现实际行为。因此,所有测试一开始都会失败。
  • 问题是这是一个学校项目,他们在我们实施了一些事情后告诉我们测试哈哈。我没有任何获取器的值和变量是公开的(我知道不正确的风格哈哈)。会不会因为我只测试健康状况而不是整个方法而发生失败?
  • 这是我得到的错误:java.lang.UnsatisfiedLinkError: com.badlogic.gdx.utils.BufferUtils.newDisposableByteBuffer(I)Ljava/nio/ByteBuffer;
猜你喜欢
  • 1970-01-01
  • 2018-12-10
  • 2019-04-08
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多