首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Boot JUnit 5测试失败,指针为空

Spring Boot JUnit 5测试失败,指针为空
EN

Stack Overflow用户
提问于 2020-12-08 22:24:53
回答 2查看 901关注 0票数 0

我得到了

org.junit.jupiter.api.extension.ExtensionContext.getRequiredTestInstances()Lorg/junit/jupiter/api/extension/TestInstances;at org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:143) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$null$0(TestMethodTestDescriptor.java:126) at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40):java.lang.NoSuchMethodError

以下代码出错。

将下面的代码作为junit测试运行的正确方式是什么?

代码语言:javascript
复制
package com.safnas.unittesting.unittesting.business;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.when;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

import com.safnas.unittesting.unittesting.data.SomeDataService;

@ExtendWith(MockitoExtension.class)
class SomeBusinessMockTest {
    
    @InjectMocks
    SomeBusinessImpl business = new SomeBusinessImpl();
    
    @Mock
    SomeDataService dataServiceMock;
    
    @Test
    void calculateSumUsingDataService_basic() {
        when(dataServiceMock.retrieveAllData()).thenReturn(new int[] {1,2,3});
        assertEquals(6, business.calculateSumUsingDataService());
    }
    
    @Test
    void calculateSum_empty() {
        when(dataServiceMock.retrieveAllData()).thenReturn(new int[] {});
        assertEquals(0, business.calculateSumUsingDataService());
    }
    
    @Test
    void calculateSum_oneValue() {
        when(dataServiceMock.retrieveAllData()).thenReturn(new int[] {5});
        assertEquals(5, business.calculateSumUsingDataService());
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-09 01:02:35

我删除了@ExtendWith(MockitoExtension.class),并在下面使用了

@BeforeEach

代码语言:javascript
复制
void beforeEach() {

MockitoAnnotations.openMocks(this);

}

它工作得很好

根据javadoc

AutoCloseable org.mockito.MockitoAnnotations.openMocks(Object testClass)

初始化带有给定testClass:@org.mockito.Mock、@Spy、@Captor、@InjectMock的Mockito批注的对象

参见javadoc for MockitoAnnotations类中的示例。参数: testClass Returns:在testClass中完成任何测试时关闭的。

票数 1
EN

Stack Overflow用户

发布于 2020-12-09 01:25:05

还有一个观察。

在没有任何更改的情况下,我最初的问题是在intelliJ中工作

eclipse似乎只有一个问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65200773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档