2017-09-07 34 views
1

我對Robolectric非常陌生。從Robolectric v3.0遷移到v3.4.1後,我遇到了這些問題。Robolectric未致電Application.onCreate()

  1. Robolectric沒有加載我AppController類延伸Application
  2. 我得到類轉換異常的鑄造RuntimeEnvironment.applicationAppController,因爲我的AppController延伸Application這應該不是這種情況,並正在在遷移到最新版本之前是好的。

請找到下面的代碼爲我的測試

@RunWith(RobolectricTestRunner.class) 
@Config(constants = BuildConfig.class, manifest = "app/src/main/AndroidManifest.xml", sdk = 21) 
public class FragmentTest { 

private ExampleFragment fragment = SupportFragmentController.of(new ExampleFragment()).create().get(); 
private Context mContext; 

@Before 
public void setUp() throws Exception { 
    // RuntimeEnvironment.application.onCreate(); 
    mContext =RuntimeEnvironment.application ; 
} 

@Test 
public void testFragmentInstantiation() { 
    ExampleFragment.mAppController = (AppController)mContext; 

} 

要重現 - 運行任何測試。

Robolectric版本是3.4.1。

回答

0

主要建議是不要將清單文件位置放在@Config部分,除非您知道自己在做什麼。所以,請改變你的測試註釋:

@Config(constants = BuildConfig.class, sdk = 21) 

而且,我不知道這是否是目的,但你可以在您的測試與最新版本使用非常新的Android SDK中Robolectric

+0

謝謝很多。從@config刪除清單工作! – WitWicky

+0

酷!您可以接受答案作爲解決方案 –