我只需右键单击该项目并使用 Android 框架作为 Junit Test 运行 - 该项目有 3 个文件
基类
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;
import android.test.AndroidTestCase;
public class AccessPreferencesTest extends AndroidTestCase {
static Context ctx;
static SharedPreferences prefs;
Editor e;
static final boolean DEFAULT_BOOLEAN = true;
@Override
protected void setUp() throws Exception {
super.setUp();
ctx = getContext();
prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
e = prefs.edit();
}
}
抛出的文件...
public final class AccessPreferencesNullValuesTest extends
AccessPreferencesTest {
public void testNullBollean() {
prefs.getString("BOOLEAN_KEY", "DEFAULT_STRING");
}
}
...如果我testPutNullBoolean()
从这个文件中删除
import gr.uoa.di.android.helpers.AccessPreferences;
public final class AccessPreferencesBooleanTest extends AccessPreferencesTest {
public void testPutNullBoolean() {
AccessPreferences.put(ctx, "BOOLEAN_KEY", null);
Boolean b = AccessPreferences.get(ctx, "BOOLEAN_KEY", null);
assertEquals(null, b);
}
public void testPutBoolean() {
AccessPreferences.put(ctx, "BOOLEAN_KEY", DEFAULT_BOOLEAN);
boolean b = AccessPreferences.get(ctx, "BOOLEAN_KEY", null);
assertEquals(DEFAULT_BOOLEAN, b);
}
}
gr.uoa.di.android.helpers.AccessPreferences (完全是alpha,所以不要开枪)
我的启动器
不用说花了一整天的时间才把它减少到这 3 个文件。
所以如果我有testPutNullBoolean
:
而如果我删除它:
“故障跟踪”显示为:
java.lang.ClassCastException: java.lang.Boolean
at android.app.ContextImpl$SharedPreferencesImpl.getString(ContextImpl.java:2699)
at gr.uoa.di.android.helpers.test.AccessPreferencesNullValuesTest.testNullBollean(
AccessPreferencesNullValuesTest.java:7)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(
InstrumentationTestRunner.java:520)
at android.app.Instrumentation$InstrumentationThread.run(
Instrumentation.java:1447)
我不介意 CCE(这又是一个非常精简的测试版本 + 一个 WIP)——我不明白为什么测试是相关的。刚开始测试,所以那里可能有一个明显的错误,但我现在看到它真的很头晕:)