我得到了
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测试运行的正确方式是什么?
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());
}
}发布于 2020-12-09 01:02:35
我删除了@ExtendWith(MockitoExtension.class),并在下面使用了
@BeforeEach
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中完成任何测试时关闭的。
发布于 2020-12-09 01:25:05
还有一个观察。
在没有任何更改的情况下,我最初的问题是在intelliJ中工作
eclipse似乎只有一个问题
https://stackoverflow.com/questions/65200773
复制相似问题