使用 PowerMock 测试 Twitter4J

Testing Twitter4J with PowerMock

我正在尝试使用 PowerMock 模拟以下代码

Twitter twitter = TwitterFactory.getSingleton();

RequestToken requestToken = twitter.getOAuthRequestToken();

这是我的单元测试的开始

@RunWith(PowerMockRunner.class)
@PrepareForTest(TwitterFactory.class)
public class AuthorisationHelperTest {

    @Test
    public void testMain() throws TwitterException {
        // Arrange
        PowerMockito.mockStatic(TwitterFactory.class);
        Twitter mockTwitter = new Twitter();
        Mockito.when(TwitterFactory.getSingleton()).thenReturn(mockTwitter);

但是我收到一条错误消息,提示我无法实例化 Twitter 类型。我想我一定是在以错误的方式思考这个问题。有什么建议吗?

以下是声明和实例化 Twitter 对象的新实例的方法:

Twitter twitter = TwitterFactory.getSingleton();

如果您不能实例化一个 Twitter class,可能是它有一个不可见的构造函数,并且只能通过工厂获得。

您可能想要做的是提供 Twitter 的模拟。

Twitter twitter = mock(Twitter.class);