4

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

我遇到的问题是:我正在尝试从 JAVA 运行类似的东西:

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

但是“上下文”是 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()

我已经开始研究模拟,但不知道我是否让它太复杂了......

  • Mockito ”只模拟接口,我想模拟 MainActivity类,
  • Android Mock ”太复杂了,我无法构建我的项目 MainActivity myMockObject = AndroidMock.createMock(MainActivity.class);
  • Robotium ”看起来像是一个测试Android应用程序的Android应用程序。

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

4

1 回答 1

2

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

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

于 2013-04-03T23:49:40.063 回答