【问题标题】:Creating / Mocking Android Context from a Java Application从 Java 应用程序创建/模拟 Android 上下文
【发布时间】:2013-04-03 23:05:55
【问题描述】:

我正在尝试编写一个在 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()

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

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

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

【问题讨论】:

    标签: java android mocking mockito android-context


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多