当前位置: 首页 > 知识库问答 >
问题:

为什么我在使用模拟注释时有NPE

贺彬
2023-03-14

我正在研究如何使用Mockito和Junit,现在测试一些片段。我不明白为什么我在Mock注释后在下面的代码中有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());
    }
}

但是代码的第一部分工作得很好,尽管据我所知,这两个部分都是这样做的。

编辑:堆栈跟踪:

null

共有1个答案

吴鸿禧
2023-03-14

替换

@RunWith(MockitoJUnitRunner.class)

@ExtendWith(MockitoExtension.class)

就像一种魅力。

@runwith用于Junit4,而@extendwith用于JUnit5。

 类似资料:
  • 问题内容: 它为什么如此重要?根据XML映射的优势是什么?你能解释这些吗?谢谢。 问题答案: 它不是“强制性”中的重要内容。有优势和劣势的可能性是不同的。 优点: 编译时检查:如今在IDE中,用Java(而不是Xml)编写非常易于使用。启动应用程序(渐进式编译)时,没有发现 更多错别字 ,也没有什么值得记住的( 完成 )… 使用代码进行本地化(类级别):不必打开两个文件(java和xml)以获取完

  • 问题内容: 使用Java 注释的最佳实践是什么?为什么? 用注解标记每个覆盖的方法似乎是过大的。是否存在某些编程情况要求使用和其他不应该使用的情况? 问题答案: 每次你重写一种方法都有两个好处时使用它。这样做是为了使你能够利用编译器检查的优势,以确保你认为自己确实覆盖了某个方法。这样,如果你犯了拼写错误的方法名称或不正确匹配参数的常见错误,将会警告你方法实际上并没有像你认为的那样覆盖。其次,它使你

  • 我遇到了这个代码 我在字段上看到过@autowire,它的意思是按类型自动连接,使用这个字段的类将获得特定类型的bean。 但是在上面的代码中,我不确定是谁在使用这个RootResource bean? 这是spring-泽西Rest项目。 据我所知,spring将创建RootResource的bean,将使用这个bean来设置它的属性。(我看不到此bean的任何显式配置) 我的问题是, 1)这个

  • 问题内容: 我发现不方便之处在于番石榴中的前提条件没有标注注释。考虑以下示例: 因此IDE找不到总是错误的。是否有任何特殊原因为什么不标记此前提条件(即使其参数是使用定义的)。 问题答案: 很抱歉,我们没有在任何地方使用过。为什么?我们尝试添加更多的空检查注释,发现: 添加所有其他注释非常冗长。 这就是我们所需要的。诚然,对于Guava开发人员而言,这比Guava用户更为重要。 似乎遇到了大多数问

  • 问题内容: 我在使用JMockit(1.21)模拟时遇到问题。请参阅以下内容,以简化我的实际课程。基本上我在我的代码中使用了某个地方,我希望对其进行模拟。 至于我的测试代码,此测试有效。 该测试失败。 我收到的错误消息: 我可以嘲笑像其他系统类和这样的,但只是似乎没有工作(也没有为此事)。我知道如何规避这是我的考验,所以我没有受到任何阻碍,但我不明白为什么不能嘲笑。删除Expectations块将

  • 本文向大家介绍在 Spring MVC 中使用 WebMvcTest 注释有什么用?相关面试题,主要包含被问及在 Spring MVC 中使用 WebMvcTest 注释有什么用?时的应答技巧和注意事项,需要的朋友参考一下 WebMvcTest** 注释用于 Spring MVC 程序的单元测试,其目标是专注于Spring MVC组件。在上面显示的快照中,我们只想启动 ToTestControll