2015-12-11 62 views
0

例外,我有簡單的應用程序類:Android的測試拋出應用類

public class MainApplication extends Application { 
    public MainApplication() throws Exception { 
     throw new Exception(); 
    } 
} 

和簡單的測試:

public class SimpleTests extends AndroidTestCase { 
    public void testSum() { 
     assertEquals(4, 2 + 2); 
    } 
} 

爲什麼我得到我的測試一個異常開始?我的測試如何與Application類相關?

Running tests 
Test running startedTest running failed: Instrumentation run failed due to 'java.lang.Exception' 
Empty test suite. 

Android Studio中v.1.5.1

UPDATE:當然是我的應用程序子類是比較複雜的,包含在方法 「的onCreate」 業務邏輯。當我運行我的測試時,我不想運行這個邏輯。

+2

「爲什麼我得到了我的異常測試開始了嗎?「 - 假設你在清單中註冊了這個'Application'子類(''元素中的'android:name'),那麼每當你的應用程序的進程啓動時,就會創建一個'Application'子類的實例。 「我的測試如何與應用程序類相關?」 - 顯然,你正在測試一個使用這個'Application'類的Android應用程序,正如我在前一段中所描述的那樣。如果您認爲情況並非如此,那麼您可能會發布相關清單和測試代碼。 – CommonsWare

+0

謝謝。我如何防止僅在我的測試中運行Application子類?請參閱更新。 – Dem0n13

+0

「我如何防止僅在我的測試中運行應用程序子類?」 - 你沒有。您修復'Application'子類,以便它在測試時可以工作。 – CommonsWare

回答

1

了一個選項,用於測試覆蓋應用程序類。在配置的gradle

  1. 使用自定義testInstrumentationRunner:

    testInstrumentationRunner 'com.xxx.test.CustomTestRunner' 
    
  2. 實施亞軍不使用你的應用程序類:

    public class CustomTestRunner extends InstrumentationTestRunner { 
        @Override 
        public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { 
         return super.newApplication(cl, Application.class.getName(), context); 
        } 
    } 
    
0

這是因爲你被代碼應用的建築工扔

刪除

throw new Exception(); 

從MainApplication建築工

相關問題