好吧,我正在做一个简单的测试以了解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();
}
答案 0 :(得分:2)
这是因为在一种方法(您的测试用例)中,本地原始变量id
设置为2。然后,将按值传递给另一种方法。按值传递意味着将确切的按位副本放在调用堆栈上。被调用的方法将设置其变量的本地副本,但不会修改调用方的变量。
如果传递了列表,则将看到修改,因为列表引用是按值传递的,因此可以像添加新元素一样对列表进行更改,并且可以修改调用者的列表。您还可以修改对列表的引用,但调用者将看不到它,即,如果将列表重新分配给被调用方法中的某些新列表,则调用者仍将拥有旧列表。
这就是Java传递参数的方式。它与JUnit无关。