Java 无法模拟具有列表类型参数的方法
我有一个这样的方法Java 无法模拟具有列表类型参数的方法,java,spring-boot,junit,mockito,junit4,Java,Spring Boot,Junit,Mockito,Junit4,我有一个这样的方法 public int[] processData(List<Data> dataList){ //business logic } 及 when(processData(Mockito.anyList()).thenReturn(newint[]{1,1}); 但什么都不管用 我将SpringBoot与Java11和Mockito3.1一起使用 还有其他方法可以模拟相同的吗?Mockito利用equal()作为验证/匹配参数值的传统方法 在某些情况下,
public int[] processData(List<Data> dataList){
//business logic
}
及
when(processData(Mockito.anyList()).thenReturn(newint[]{1,1});
但什么都不管用
我将SpringBoot与Java11和Mockito3.1一起使用
还有其他方法可以模拟相同的吗?Mockito利用
equal()
作为验证/匹配参数值的传统方法
在某些情况下,用户在验证参数值时需要更大的灵活性,因此最好使用参数匹配器,而不是equal()
方法
注:
equals()
方法要求要使两个列表相等,它们必须以相同的顺序包含相同的元素有关详细信息,请参阅文档:Mockito利用
equal()
作为验证/匹配参数值的传统方法
在某些情况下,用户在验证参数值时需要更大的灵活性,因此最好使用参数匹配器,而不是equal()
方法
注:
equals()
方法要求要使两个列表相等,它们必须以相同的顺序包含相同的元素有关详细信息,请参阅文档:您的示例适用于我:
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
public class Test {
@Mock
A a;
@org.junit.jupiter.api.Test
public void t1() {
when(a.processData(anyList())).thenReturn(new int[]{1,1});
System.out.println(Arrays.toString(a.processData(new ArrayList<>())));
}
}
interface Data {}
interface A {
int[] processData(List<Data> dataList);
}
import org.junit.jupiter.api.extension.extendedwith;
导入org.mockito.Mock;
导入org.mockito.junit.jupiter.MockitoExtension;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入静态org.mockito.ArgumentMatchers.anyList;
导入静态org.mockito.mockito.when;
@ExtendWith(MockitoExtension.class)
公开课考试{
@嘲弄
A A;
@org.junit.jupiter.api.Test
公共空间t1(){
when(a.processData(anyList()).thenReturn(newint[]{1,1});
System.out.println(Arrays.toString(a.processData(newarraylist()));
}
}
接口数据{}
接口A{
int[]进程数据(列表数据列表);
}
这将打印:
[1,1]
您的示例对我很有用:
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
public class Test {
@Mock
A a;
@org.junit.jupiter.api.Test
public void t1() {
when(a.processData(anyList())).thenReturn(new int[]{1,1});
System.out.println(Arrays.toString(a.processData(new ArrayList<>())));
}
}
interface Data {}
interface A {
int[] processData(List<Data> dataList);
}
import org.junit.jupiter.api.extension.extendedwith;
导入org.mockito.Mock;
导入org.mockito.junit.jupiter.MockitoExtension;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入静态org.mockito.ArgumentMatchers.anyList;
导入静态org.mockito.mockito.when;
@ExtendWith(MockitoExtension.class)
公开课考试{
@嘲弄
A A;
@org.junit.jupiter.api.Test
公共空间t1(){
when(a.processData(anyList()).thenReturn(newint[]{1,1});
System.out.println(Arrays.toString(a.processData(newarraylist()));
}
}
接口数据{}
接口A{
int[]进程数据(列表数据列表);
}
这将打印:[1,1]
您可以尝试使用when(processData(mock(List.class)).thenReturn(new int[]{1,1})但您的变量when(processData(anyList())).thenReturn(new int[]{1,1})也适用于我。您可以尝试使用when(processData(mock(List.class)).thenReturn(new int[]{1,1}),但您的变量when(processData(anyList()).thenReturn(new int[]{1,1})也适用于我。你所说的“不起作用”是什么意思?发生了什么?你所说的“不起作用”是什么意思?发生了什么?
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
public class Test {
@Mock
A a;
@org.junit.jupiter.api.Test
public void t1() {
when(a.processData(anyList())).thenReturn(new int[]{1,1});
System.out.println(Arrays.toString(a.processData(new ArrayList<>())));
}
}
interface Data {}
interface A {
int[] processData(List<Data> dataList);
}