アプリケーションのクリーンなインスタンスで多数の単体テストを実行したいのですが、getActivity を使用してインスタンスを作成し、テストの最後にそれを終了することで実行できると考えました。しかし、前のテストでのアクションが次のテストに影響を与えていることに気付きました。問題を再現するために、次の簡単なアプリケーションを作成しました。
テスト セットアップは、各テストでアクティビティを取得して終了するいくつかのテストを示しています。アクティビティの作成中に、カウンターが onCreate でインクリメントされます。3 回のテストではすべて 1 であると予想されますが、最新のテストでは 3 であることがわかります。どういうわけかコンテキストが再利用されます。
各テストでアプリケーションをゼロからテストする方法を誰かが説明し、示すことができますか?
import com.example.activitykeepscontext.MainActivity;
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
public MainActivityTest() {
super("com.example.activitykeepscontext", MainActivity.class);
}
public void testCount1() {
MainActivity mainActivity = getActivity();
mainActivity.finish();
}
public void testCount2() {
MainActivity mainActivity = getActivity();
mainActivity.finish();
}
public void testCount3() {
MainActivity mainActivity = getActivity();
mainActivity.finish();
}
}
これはアプリケーションです:
package com.example.activitykeepscontext;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppData appData = (AppData)getApplicationContext();
appData.count++;
Log.i(TAG, "Count: " + appData.count);
}
}
これは、アプリケーション コンテキストを介してデータを渡すために使用されるクラスです。
package com.example.activitykeepscontext;
import android.app.Application;
public class AppData extends Application {
public int count;
}