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

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

申屠宏胜
2023-03-14

我得到了

java.lang.nosuchmethoderror:org.junit.jupiter.api.extension.extensioncontext.getRequiredTestInstances()log/junit/jupiter/api/extension/TestInstances;在org.mockito.junit.jupiter.mockitoExtension.Beforeach(mockitoExtension.java:143)在org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$null$0(TestMethodTestDescriptor.java:126)在org.junit.jupiter.engine.execution.throwablecollector.execute(throwablecollector.java:40)

以下代码出错。

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

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());
    }

}

共有1个答案

轩辕经国
2023-03-14

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

@在每个之前

void beforeEach() {

MockitoAnnotations.openMocks(this);

}

它工作得很好

按照javadocs

自动关闭org.mockito.mockitoAnnotations.OpenMocks(对象testClass)

为给定的TestClass初始化用Mockito注释注释的对象:@org.Mockito.mock,@spy,@captor,@injectmocks

 类似资料:
  • 我有一个主页。我正在尝试使用测试注释测试TestNG中的页面标题。我得到了testTitle()的NullPointerException。url正在打开。

  • SpringWeb应用程序的事务JUnit测试失败。 具体地说:如果我分别使用maven执行每个测试,它们将运行: 如果我执行 我在其中一个测试中发现JPA错误: 如果我设置surefire插件为每个测试重新创建整个JVM,它们也会运行,这当然需要花费大量的时间。 应用程序设置: Spring,与Spring Roo(因此proxyMode=asjectJ!) Eclipselink作为JPA提供

  • 我有一些mocha/chai/chai-http测试,它们遵循下面的结构,但是,每当一个测试失败时,我会得到一个 ,我似乎不知道它的来源。 UnhandledPromiserEjectionWarning:未处理的承诺拒绝。此错误可能是由于不带catch块的异步函数内部引发的,或者是由于拒绝了未用。catch()处理的承诺。 我尝试在 后面添加一个 承诺.reject(err)/code>,但也不

  • Jenkins将良好的构建标记为失败,因为某些单元测试失败。如果我在没有单元测试的情况下运行构建,我将获得构建成功状态。如何配置Jenkins来执行以下操作:

  • 尝试让JUnit与mockito测试一起工作,并在我的测试中获得NPE。我想验证一下,当调用时,紧接着调用了方法。我觉得奇怪的一个问题是,在Mockito上。验证(registrationServiceImpl,Mockito.times(1))。创建注册人(registrationDTO) 方法?IntelliJ只建议界面中的方法? 我的测试代码如下: 下面是我正在测试的代码: