繁体   English   中英

Spring 引导 JUnit 5 测试失败,null 指针

[英]Spring Boot JUnit 5 test failing with null pointer

我正进入(状态

java.lang.NoSuchMethodError: org.junit.jupiter.api.extension.ExtensionContext.getRequiredTestInstances() 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)

以下代码错误。

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

}

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

@BeforeEach

void beforeEach() {

MockitoAnnotations.openMocks(this);

}

它工作得很好

根据 javadocs

AutoCloseable org.mockito.MockitoAnnotations.openMocks(对象 testClass)

为给定的 testClass 初始化使用 Mockito 注释的对象:@org.mockito.Mock、@Spy、@Captor、@InjectMocks

有关 MockitoAnnotations class,请参阅 javadoc 中的示例。 参数:testClass 返回:在 testClass 中完成任何测试时关闭的可关闭对象。

再观察一次。

没有任何改变,我原来的问题是在 intelliJ

eclipse 似乎只是有问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM