2016-06-07 22 views
2

當我這樣寫時MyActivity activity = Robolectric.setupActivity(MyActivity.class);關於Robolectric。當我在對象中有對象不初始化時,如何測試該活動?

它總是拋出這樣的:

java.lang.NullPointerException 
    at com.printer.ui.activity.MyActivity.initView(MyActivity.java:309) 
    at com.ui.activity.MyActivity.onCreate(MyActivity.java:114) 

這條線是這樣的:

fileTextView.setText(AppUtil.getFileNameNoEx(AppConfig.printFile.getName())); 

而且AppConfig.printFile是空的,我怎麼能測試活動?

+0

你可以分享'AppConfig'的代碼嗎?當'printFile'啓動時? –

+0

另一個Activity,它從網上下載一個文件,像這樣設置值** AppConfig.printFile = new File(successFilePath)**,然後啓動MyActivity。 – user2545386

回答

1

所以,快速解決您的測試做:

AppConfig.printFile = new File(); 
MyActivity activity = Robolectric.setupActivity(MyActivity.class); 

正確的解決將被傳遞活動的意圖路徑:

public class MyActivity { 
    public static final String FILE_PATH = "FILE_PATH"; 

    public void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 

     String path = getIntent().getStringExtra(FILE_PATH); 
     ... 
    } 
    ... 
} 

Intent myActivityIntent = new Intent(this, MyActivity.class); 
intent.putExtra(MyActivity.FILE_PATH, "path"); 
startActivity(intent); 

而且儘量避免靜態儘可能http://www.endran.nl/blog/death-to-statics/

+0

謝謝。另一個問題,我可以初始化AppConfig.printFile,以便它可以在整個測試類中使用,但不是單個測試。是否有可能? – user2545386

+0

您可以擴展測試課程或查看Roboelctric Test Application(http://robolectric.org/custom-test-runner/) –