我正在为我的代码编写一个JUnit测试用例,但Mockito总是返回null
@Component
public class ConnectorImpl {
public String returnString(String inte) {
String x = testing();
return x;
}
public String testing() {
return "test";
}
}
测试类
@RunWith(MockitoJUnitRunner.class)
public class ConnectorImplTest {
@Mock public ConnectorImpl connector;
@Test
public void testLoggedInRefill() throws Exception {
Mockito.when(connector.testing()).thenReturn("test");
String x = connector.returnString("8807");
assertEquals("8807", x);
}
}
当我打电话给connector.returnString("8807");
时,它总是返回null
。我做错了什么吗?我是JUnit的新手。
测试方法returnString
的一种方法是:
// mock 'returnString' method call
Mockito.when(connector.returnString(anyString()).thenReturn("test");
// assert that you've mocked succesfully
assertEquals("test", connector.returnString("8807"));
根据你的代码,你是在嘲笑你的ConnectorImpl
因此,它是一个空对象,这意味着您可以专门when(...).then(...)
您喜欢测试的任何功能。
顺便说一句 - 如果您正在测试ConnectorImpl
那么您不应该嘲笑它,而应该实际使用真正的 bean。你应该嘲笑ConnectorImpl
正在使用的豆子。
所以我建议你的代码看起来像这样:
@RunWith(MockitoJUnitRunner.class)
public class ConnectorImplTest {
public ConnectorImpl connector = new ConnectorImpl(...);
@Test
public void testLoggedInRefill() throws Exception {
String x = connector.returnString("8807");
assertEquals("8807", x);
}
}
您正在模拟对象,并且没有为模拟对象的 returnString 方法指定任何行为。就像你对 testing() 所做的那样,你可以对 returnString() 方法做同样的事情:
when(connector.returnString(anyString())).thenReturn("text")
另一方面,为什么你需要 ti 嘲笑这个类?