JUnit 测试始终返回空值



我正在为我的代码编写一个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 嘲笑这个类?

相关内容

  • 没有找到相关文章