首页 > 解决方案 > JUnit 测试总是返回 null

问题描述

我正在为我的代码编写一个 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 的新手。

标签: javajunitmockito

解决方案


根据您的代码,您正在嘲笑您的ConnectorImpl

所以它是一个空对象,这意味着它取决于你when(...).then(...)想要测试的任何功能。

顺便说一句 - 如果您正在测试,ConnectorImpl那么您不应该模拟它,而是实际使用真正的 bean。您应该模拟ConnectorImpl正在使用的 bean。

所以我建议你的代码看起来可能是这样的:

@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);
    }
}

推荐阅读