2013-04-03 61 views
3

我正在嘗試編寫一個在Android項目中使用某些功能的Java程序。 我不需要Android設備或模擬器,我只需要使用Android項目的一些功能。從Java應用程序創建/模擬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模擬」太複雜了,我 不能讓我的項目,以建立與MainActivity myMockObject = AndroidMock.createMock(MainActivity.class);
  • Robotium」好像是一個測試Android應用程序的Android應用程序。

我只是想建立某種形式的Android虛擬情境,並用它在我的Java應用程序,獲取對Android的類的其他功能...這可能嗎?

回答

2

android.jar只包含殘段執行類。它爲應用程序構建提供了手段,一旦你有了APK,你就必須在Android設備或模擬器上運行它。

即使您模擬您需要的組件(即Context),您也可以在某處找到存根()。如果你不這樣做,那麼你試圖運行的代碼不是依賴於android的,你可能會將它分解到可以在Java和Android項目之間共享的外部jar