JUnit 尝试测试有效输入以查看它 returns 是否是正确的值

JUnit trying to test a valid input to see if it returns the correct value

我正在尝试测试 getPoints 以使用 Junit5 测试检查它 returns 是否是正确的值。

public class Grade {
    private final int points;

    public int getPoints() {
        return points;
    }

    public Grade(int p) throws IllegalArgumentException {
        if(p<1 || p>20) 
            throw new IllegalArgumentException();
        points = p;
    }
}

目前我的测试是:

@Test
    void PointReturnTest() {
        int p = 15;
        assertSame(p,p);
    }

我不认为我实际上在测试 getPoints,因为它没有链接到我上面的 Junit 测试 ^。我问的原因是因为当我输入:

 int p = 30;
        assertSame(p,p);

Junit 测试在无效时仍然通过

if(p<1 || p>20) 

有没有更好的方法来测试这个?

编辑: 目前这是我拥有的:

@Test
    void PointReturnTest() {
        int p = 15;
        Grade grade = new Grade(p);
        assertEquals(p, p.getPoints());
    }

但令人担忧的是它说:“无法在基本类型 int 上调用 getPoints()”

也许您正在寻找这样的东西?

@Test
void PointReturnTest() {
    int p = 15;
    Grade grade = new Grade(p);
    assertEquals(p, grade.getPoints());
}

使用您的代码:

@Test
    void PointReturnTest() {
        int p = 15;
        assertSame(p,p);
    }

断言比较 15 和 15.. p 是局部的,不是 Grade 中的 p。

因此你不能写:

@Test
    void PointReturnTest() {
        int p = 15;
        Grade grade = new Grade(p);
        **assertEquals(p, p.getPoints());**
    }

p是局部变量(int)...写grade.getPoints()。正如已经建议的那样