【问题标题】:Interface mocking works improperly接口模拟工作不正常
【发布时间】:2018-06-08 14:30:25
【问题描述】:

我正在编写一个测试并尝试模拟 IMyResponse 接口。但它在模拟后返回 int 。这是我的工作:

public interface IMyResponse extends Serializable {
    // ...
    Object getResponseObject();
}

private IMyResponse myResponse;

@Before
public void setUp(){
    myResponse = mock(IMyResponse.class);
}

@Test
public void mockTest(){
    // myResponse.getResponseObject() is 0
    when(myResponse.getResponseObject()).thenReturn("value");
    // myResponse.getResponseObject() is 46
}

我做错了什么?

【问题讨论】:

  • [help-me] 没有什么明显的错误。请提供我们可以运行以重现问题的代码。
  • 你用@RunWith(MockitoJUnitRunner.class)注释了测试类吗?
  • @RunWith(MockitoJUnitRunner.class) public class MyResponseTest { private IMyResponse myResponse; @Before public void setUp(){ myResponse = mock(IMyResponse.class); } @Test public void mockTest(){ when(myResponse.getResponseObject()).thenReturn("value"); System.out.println(myResponse.getResponseObject()); } } 工作得很好。不知道你在做什么
  • 我不能提供更多细节,因为这个接口是一个大库的一部分。当我将此接口更改为子类时,它可以正常工作。您可能知道出了什么问题吗?
  • 注解为@RunWith(AndroidJUnit4.class)

标签: java unit-testing testing mockito


【解决方案1】:

更改 mockito 版本有帮助(当时是 1.10):

androidTestImplementation 'org.mockito:mockito-android:2.15.0'

【讨论】:

  • 感谢您提供这个自我回答。也请勾选“已接受”标记,将其标记为解决方案。
猜你喜欢
  • 2014-07-27
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 2020-08-14
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多