JUnit测试始终返回null

时间:2018-12-30 14:00:10

标签: java junit mockito

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

3 个答案:

答案 0 :(得分:0)

测试方法// mock 'returnString' method call Mockito.when(connector.returnString(anyString()).thenReturn("test"); // assert that you've mocked succesfully assertEquals("test", connector.returnString("8807")); 的一种方法是:

JsonObject o = Json.createReader(new URL("https://www.googleapis.com/oauth2/v1/tokeninfo?access_token="+token).openStream()).readObject();

答案 1 :(得分:0)

根据您的代码,您正在嘲笑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);
    }
}

答案 2 :(得分:0)

您正在模拟对象,并且没有为模拟对象的returnString方法指定任何行为。就像您对testing()所做的一样,您可以对returnString()方法做同样的事情:

when(connector.returnString(anyString())).thenReturn("text")

另一方面,为什么您需要模拟此类?