Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在使用模拟注释时要使用NPE_Java_Junit_Mockito - Fatal编程技术网

Java 为什么在使用模拟注释时要使用NPE

Java 为什么在使用模拟注释时要使用NPE,java,junit,mockito,Java,Junit,Mockito,我正在研究如何使用Mockito和Junit,现在正在测试一些代码片段。我不明白为什么在模拟注释之后,在以下代码中有NPE: @RunWith(MockitoJUnitRunner.class) public class MockitoTest{ @Test public void whenNotUseMockAnnotation() { List mockList = mock(ArrayList.class); mockList.ad

我正在研究如何使用Mockito和Junit,现在正在测试一些代码片段。我不明白为什么在模拟注释之后,在以下代码中有NPE:

@RunWith(MockitoJUnitRunner.class)
public class MockitoTest{
    @Test
    public void whenNotUseMockAnnotation() {
        List mockList = mock(ArrayList.class);
    
        mockList.add("one");
        verify(mockList).add("one");
        assertEquals(0, mockList.size());
 
        when(mockList.size()).thenReturn(100);
        assertEquals(100, mockList.size());
    }
    @Mock
    List <String> mockedList;

    @Test
    public void whenUseMockAnnotation() {
        mockedList.add("one");
        verify(mockedList).add("one");
        assertEquals(0, mockedList.size());
 
        when(mockedList.size()).thenReturn(100);
        assertEquals(100, mockedList.size());
    }
}
@RunWith(MockitoJUnitRunner.class)
公共类模拟测试{
@试验
未使用MockAnnotation()时的公共无效{
List mockList=mock(ArrayList.class);
模拟列表。添加(“一”);
验证(模拟清单)。添加(“一”);
assertEquals(0,mockList.size());
当(mockList.size())。然后返回(100);
assertEquals(100,mockList.size());
}
@嘲弄
列表模拟列表;
@试验
public void whenUseMockAnnotation(){
模拟列表。添加(“一”);
验证(模拟列表)。添加(“一”);
assertEquals(0,mockedList.size());
when(mockedList.size())。然后返回(100);
assertEquals(100,mockedList.size());
}
}
但是代码的第一部分工作得很好,尽管据我所知,这两部分都在做相同的事情

编辑: 堆栈跟踪:

java.lang.NullPointerException 位于com.foxmind.decoratortest.decoratortest.whenUseMockAnnotation(decoratortest.java:39) 位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 位于java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 位于java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 位于java.base/java.lang.reflect.Method.invoke(Method.java:564) 位于org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:675) 位于org.junit.jupiter.engine.execution.MethodInvocation.procedure(MethodInvocation.java:60) 位于org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.Procedue(InvocationInterceptorChain.java:125) 位于org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:132) 位于org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:124) 位于org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:74) 位于org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) 位于org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) 位于org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.Procedue(InvocationInterceptorChain.java:104) 在org.junit.jupiter.engine.execution.InvocationInterceptorChain.procedure(InvocationInterceptorChain.java:62)上 位于org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:43) 位于org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:35) 位于org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) 位于org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) 位于org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:202) 位于org.junit.platform.engine.support.hierarchy.ThrowableCollector.execute(ThrowableCollector.java:73) 位于org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:198) 位于org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135) 位于org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69) 位于org.junit.platform.engine.support.hierarchy.NodeTestTask.lambda$ExecuteCursive$5(NodeTestTask.java:135) 位于org.junit.platform.engine.support.hierarchy.ThrowableCollector.execute(ThrowableCollector.java:73) 位于org.junit.platform.engine.support.hierarchy.NodeTestTask.lambda$executecurively$7(NodeTestTask.java:125) 位于org.junit.platform.engine.support.hierarchy.Node.around(Node.java:135) 位于org.junit.platform.engine.support.hierarchy.NodeTestTask.lambda$ExecuteCursive$8(NodeTestTask.java:123) 位于org.junit.platform.engine.support.hierarchy.ThrowableCollector.execute(ThrowableCollector.java:73) 在org.junit.platform.engine.support.hierarchy.NodeTestTask.ExecuteCursive上(NodeTestTask.java:122) 位于org.junit.platform.engine.support.hierarchy.NodeTestTask.execute(NodeTestTask.java:80) 位于java.base/java.util.ArrayList.forEach(ArrayList.java:1511) 位于org.junit.platform.engine.support.hierarchy.samethreadherarchycalTestExecutorService.invokeAll(samethreadherarchycalTestExecutorService.java:38) 位于org.junit.platform.engine.support.hierarchy.NodeTestTask.lambda$ExecuteCursive$5(NodeTestTask.java:139) 位于org.junit.platform.engine.support.hierarchy.ThrowableCollector.execute(ThrowableCollector.java:73) 位于org.junit.platform.engine.support.hierarchy.NodeTestTask.lambda$executecurively$7(NodeTestTask.java:125) 位于org.junit.platform.engine.support.hierarchy.Node.around(Node.java:135) 位于org.junit.platform.engine.support.hierarchy.NodeTestTask.lambda$ExecuteCursive$8(NodeTestTask.java:123) 位于org.junit.platform.engine.support.hierarchy.ThrowableCollector.execute(ThrowableCollector.java:73) 在org.junit.platform.engine.support.hierarchy.NodeTestTask.ExecuteCursive上(NodeTestTask.java:122) 位于org.junit.platform.engine.support.hierarchy.NodeTestTask.execute(NodeTestTask.java:80) 位于java.base/java.util.ArrayList.forEach(ArrayList.java:1511) 位于org.junit.platform.engine.support.hierarchy.samethreadherarchycalTestExecutorService.invokeAll(samethreadherarchycalTestExecutorService.java:38) 位于org.junit.platform.engine.support.hierarchy.NodeTestTask.lambda$ExecuteCursive$5(NodeTestTask.java:139) 位于org.junit.platform.engine.support.hierarchy.ThrowableCollector.execute(ThrowableCollector.java:73) 位于org.junit.platform.engine.support.hierarchy.NodeTestTask.lambda$executecurively$7(NodeTestTask.java:125) 在org.jun
@RunWith(MockitoJUnitRunner.class)
@ExtendWith(MockitoExtension.class)