我想在我的应用程序的一个干净实例上运行一些单元测试,并认为我可以通过使用 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;
}