簡體   English   中英

如何在Android的JUnit測試用例中獲取MainActivity的上下文和活動?

[英]How do I get the context and activity of MainActivity in JUnit test cases in android?

我正在創建一個簡單的測驗應用程序,其中用戶回答了五個問題,並將結果烘烤到了屏幕上。 在我的MainActivity中,我調用帶有參數上下文和活動的questionsMethods類的構造函數。

我的問題是:如何在JUnit測試類中獲取MainActivity的上下文和活動? 我需要這樣做是因為questionsMethods中的方法利用了上下文和活動。

部分代碼:MainActivity:

    public class MainActivity extends AppCompatActivity {
        questionsMethods myQuestionMethods = new questionsMethods(this, this);
        private String[] questionArray = new String[30]; // Holds text file
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            AssetManager assetManager = getAssets();

            myQuestionMethods.readWriteFile("listofquestions.txt", questionArray); // Reads from text file into array

questionsMethods:

public class questionsMethods {
private Context mContext;
    private Activity mActivity;
    private int localCounterForCurrQuestionCount = 1;
    private String[] localQuestionsArray = new String[30];     

    public questionsMethods(Context context, Activity activity) {
        mContext = context;
        mActivity = activity;
    }

public void readWriteFile(String fileName, String[] questionArray) {
    int count = 0; // Holds count of array index in which a line is stored
    try {
        String nextLine;
        InputStream is = mContext.getAssets().open(fileName); // Retrieves and opens fileName
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
        while ((nextLine = bufferedReader.readLine()) != null) { // Check if line incrementer reaches the end
            questionArray[count] = nextLine;
            count++;
        }
    } catch (java.io.IOException ex) {
        Log.i("Error", "Cannot read file");
        System.exit(1);
    }
    localQuestionsArray = questionArray;
}

使用Robolectric,但是您的代碼很難測試。 QuestionMethods類僅負責業務邏輯,不應依賴於Android。

因此,如果您想使代碼更整潔並且要正確測試QuestionMethods ,則Robolectric不應用於負責業務邏輯的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM