被测方法的参数不变

时间:2019-09-05 14:09:19

标签: junit

好吧,我正在做一个简单的测试以了解junit,说实话我不明白为什么

@Test
void findById() {
    Long id= 2L;
    Visit returnedVisit = service.findById(id);
    assertEquals(Long.valueOf(4L),id);
}

id在测试方法中更改值后等于2

public Visit findById(Long aLong) {
    aLong= 4L;
    return new Visit();
}

1 个答案:

答案 0 :(得分:2)

这是因为在一种方法(您的测试用例)中,本地原始变量id设置为2。然后,将按值传递给另一种方法。按值传递意味着将确切的按位副本放在调用堆栈上。被调用的方法将设置其变量的本地副本,但不会修改调用方的变量。

如果传递了列表,则将看到修改,因为列表引用是按值传递的,因此可以像添加新元素一样对列表进行更改,并且可以修改调用者的列表。您还可以修改对列表的引用,但调用者将看不到它,即,如果将列表重新分配给被调用方法中的某些新列表,则调用者仍将拥有旧列表。

这就是Java传递参数的方式。它与JUnit无关。

另请参阅this question and its answers