我正在尝试编写一个使用 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/