JUnit测试在使用时抛出错误



我有一个JUnit测试,如下所示,但它在when().then()上抛出InvalidUseOfMatchers错误。我试着把它替换成:

when(any(MyUtilityClass.class).inheritedMethod(anyMap(), anyString())).thenReturn(anyString());

然后抛出NullPointer。那么,我该如何解决这个问题呢?

MyUtilityClassTest

@ExtendWith(MockitoExtension.class)
public class MyUtilityClassTest {

@InjectMocks
private MyUtilityClass muc;

@Test
void test() {
when(muc.inheritedMethod(anyMap(), anyString())).thenReturn(anyString()); //invalid use of matchers error
var response = muc.getData();
assertEquals("EXPECTED_VALUE", response.getValue());
}
}

MyUtilityClass

public MyUtilityClass extends AbstractParentClass {

@Value("${value}")
private String value;
public DataClass getData() {
var data = DataClass.builder().build();
data.setValue( inheritedMethod(new HashMap<String, Object>(), value) );
return data;
}
}

您的模拟语句是与多。但这里不是InjectedMock模拟对象。要模拟一个类,可以使用@Mock或@Spy。但是,当您依赖于其他类时,则使用mock对象。但根据你的代码,你正在测试MyUtilityClass和它似乎继承的方法也在同一个类。我认为你不需要mock任何东西,除非你有其他类的依赖。

相关内容

  • 没有找到相关文章

最新更新