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

标签 java android mocking mockito android-context

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

我遇到的问题是:我正在尝试从 JAVA 运行类似这样的程序:

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

但是“上下文”是 Android 的东西,我只是不知道如何创建一个,或者模拟一个,或者从我的 Java 类中获取一个。

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

我试过了

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

但是我在线程 "main"java.lang.RuntimeException: Stub! 中得到一个 Exception! 错误

我也试过

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

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

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

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

最佳答案

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

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

关于java - 从 Java 应用程序创建/模拟 Android 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15799802/

相关文章:

java - Mockito - 不可能 stub 模拟对象

java - 使用 Java Regex 限制连续字符

java - 使用 Jackson 将复杂的 JSON 转换为一级 POJO

android - Osmdrord/osmbonuspack - 自定义导航箭头(通过 MyLocationNewOverlay?)

android - 无法启动应用程序

android - Glide 4 记录

objective-c - 如何在 Kiwi 中 stub 方法 block ?

java - 将 TextView 更改为自定义 ListView 中的可点击单词

java - 在android中循环内更改imageview图像

java - 如何模拟静态变量,该变量是通过对该静态变量的静态方法调用来初始化的