从Java应用程序创建/模拟Android上下文

时间:2013-04-03 23:05:55

标签: java android mocking mockito android-context

我正在尝试编写一个在Android项目中使用某些函数的java程序。 我不需要Android设备或模拟器,我只需要使用Android项目的一些功能。

我遇到的问题是:我正试图运行这样的东西来自JAVA:

AndroidProject testService = new AndroidProject(_context);
testService.start();

但是“Context”是一个Android的东西,我无法弄清楚如何创建一个,或模拟一个,或从我的Java类中获取一个。

我实际上对上下文不感兴趣,我真的只对testService.start()感兴趣,但是对于AndroidProject没有()构造函数,只有AndroidProject(context)构造函数可用。

我试过

Context _context;
_context = null;
AndroidProject testService = new AndroidProject(_context);
testService.start();

但我收到Exception in thread "main" java.lang.RuntimeException: Stub!错误

我也试过

MainActivity myMainActivity = new MainActivity();
Context _context;
_context = myMainActivity.getBaseContext(); // also tried getApplicationContext()

我开始研究Mocking,但不知道我是不是太复杂了......

  • Mockito ”只能模拟界面,我想嘲笑 MainActivity类,
  • Android Mock ”太复杂了,我 无法使用MainActivity myMockObject = AndroidMock.createMock(MainActivity.class);
  • 构建我的项目
  • Robotium ”似乎是一款测试Android应用程序的Android应用程序。

我只是想创建某种Android虚拟上下文并在我的java应用程序中使用它来获取该Android类的其他功能...... 这可能吗?

1 个答案:

答案 0 :(得分:2)

android.jar仅包含类的存根实现。它为你的应用程序提供了构建的方法,一旦你拥有你的APK,你必须在Android设备或模拟器上运行它。

即使您模拟了所需的组件(即Context),您也会在某处找到存根。如果不这样做,那么您尝试运行的代码不依赖于Android,您可以将其分解为可在Java和Android项目之间共享的外部jar