如何模拟应用程序上下文

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何模拟应用程序上下文相关的知识,希望对你有一定的参考价值。

我们如何模拟应用程序上下文?我有一位演示者,我打算为他写一个测试。它收到的参数是view和Context。如何创建上下文模拟工作?

public TutorProfilePresenter(TutorProfileScreenView view, Context context){
     this.view = view;
     this.context = context
}

public void setPrice(float price,int selectedTopics){
      int topicsPrice = 0;
      if(selectedTopics>2)
      {
        topicsPrice = (int) ((price/5.0)*(selectedTopics-2));
      }


      view.setBasePrice(price,topicsPrice,selectedTopics,
                        price+topicsPrice);
}
答案

作为基础,我会使用Mockito注释(我假设你也想模拟视图):

public class TutorProfilePresenter{

   @InjectMocks
   private TutorProfilePresenter presenter;

   @Mock
   private TutorProfileScreenView viewMock;
   @Mock
   private Context contextMock;

   @Before
   public void init(){
       MockitoAnnotations.initMocks(this);
   }

   @Test
   public void test() throws Exception{
      // configure mocks
      when(contextMock.someMethod()).thenReturn(someValue);

      // call method on presenter

      // verify
      verify(viewMock).setBasePrice(someNumber...)
   }

}

这个wold注入了准备好将mocks配置到你正在测试的类中。

以上是关于如何模拟应用程序上下文的主要内容,如果未能解决你的问题,请参考以下文章

访问片段的上下文 [重复]

如何在 Spring MVC 中模拟安全上下文以进行测试

如何在多片段活动中处理 onContextItemSelected?

Android - 在寻呼机中获取片段的上下文

滑动 ViewPager 时如何清除片段相关状态

片段活动错误中的ListView Adapter上下文,我该怎么办?