2017-09-10 79 views
0

從我的理解來看,單元測試更多的是編寫實際可測試的代碼,而不是編寫實際測試的代碼。如何測試我的MainActivity?

爲了編寫可測試代碼,至少在java這樣的語言中,我可能應該使用依賴注入嗎?我正在寫的應用程序目前不使用任何DI。

但是我想通過寫我的MainActivity單元測試,看起來像這樣開始:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

    private ImageButton buttonPlay; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //setting the orientation to landscape 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

     //Prevent screen from dimming when app is running 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

     //getting the button and adding click listener 
     buttonPlay = (ImageButton) findViewById(R.id.buttonPlay); 
     buttonPlay.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 

     //starting game activity 
     startActivity(new Intent(this, GameActivity.class)); 
    } 

} 

我應該對這裏的每一個方法的測試?像一個onCreate(),setContentView(),setRequestedOrientation()等?因爲林甚至不知道我會爲這些方法斷言。

回答

1

您可以使用本地單元測試(基於JVM)或Espresso單元測試或兩者都使用! 簡而言之,通過本地單元測試,您可以測試是否調用函數(在嘲笑它的依賴關係後(如果有的話))導致調用某個期望的函數。 通過Espresso單元測試,您可以測試應用程序的流程。 如果你想在Android中開始單元測試,我會推薦this codelab。

+0

似乎像谷歌文檔推薦mockito(也許這是不同的?),但我只是不知道我是否應該測試這些方法呢? – red888

+0

沒有先生,你不需要測試這些方法,但你可能想測試當你點擊按鈕時會發生什麼。你可以使用Espresso單元測試 –

+0

來測試這個場景,但是如果我不應該直接測試像setRequestedOrientation()這樣的本地方法,我該如何確認它的設置是否正確?我是否會用我自己的方法之一做更進一步的工作? – red888