项目上线后用于调试的日志信息还会被打印,这样不仅降低程序运行效率,还可能将一些机密性的数据泄露出去。
自由控制日志打印,使得开发阶段就打印,上线之后就屏蔽。
public class LogUtil { public static final int VERBOSE = 1; public static final int DEBUG = 2; public static final int INFO = 3; public static final int WARN = 4; public static final int ERROR = 5; public static final int NOTHING = 6; public static final int LEVEL = VERBOSE; public static void v(String tag, String msg) { if (LEVEL <= VERBOSE) { Log.v(tag, msg); } } public static void d(String tag, String msg) { if (LEVEL <= DEBUG) { Log.d(tag, msg); } } public static void i(String tag, String msg) { if (LEVEL <= INFO) { Log.i(tag, msg); } } public static void w(String tag, String msg) { if (LEVEL <= WARN) { Log.w(tag, msg); } } public static void e(String tag, String msg) { if (LEVEL <= ERROR) { Log.e(tag, msg); } } }开发阶段将LEVEL设为VERBOSE级别,即可打印所有日志;发布阶段将LEVEL设为NOTHING级别,即可屏蔽所有日志信息。
1)运行项目:Run As->Android Application启动程序。
2)打开DDMS试图:运行到需要调试的地方,然后进入DDMS试图,在Devices窗口中可看到我们正在运行的进程。
3)进入调试模式:选中我们要调试的进程,然后点击最上面一行的第一个按钮,就会让这个进程进入到调试模式了。进入调试模式后的进程名前会有一个虫子样式图标。
1)是什么:测试用例就是一段普通的代码,通常带有期望的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作。
2)适用场景:当你正在维护一个很庞大的程序,某天,领导让你对其中一个功能进行修改,难度不高,你很快解决了,并且测试通过。几天后,突然有人发现其他功能出了问题,最终定位出的原因竟然是你之前修改过的那个功能所导致的。所以,当项目庞大时,一般应该去编写测试用例。如果我们给项目的每个功能都编写了测试用例,每当修改或新增任何功能之后,就将所有测试用例都跑一遍,只要有任何测试用例没通过,就说明修改或新增这个功能影响到现有功能了。
3)编写测试用例
a.创建测试工程
测试工程通常不是独立存在的,而是依赖于某个现有工程。
File->New->Other打开一个对话框,展开Android目录,在里面选中Android Test Project;然后点击Next,输入测试工程的名字,并选择测试工程的路径;最后,选择要为哪个项目创建测试功能。
生成的AndroidMainfest.xml文件中这些代码都是自动生成的,用来表明这是一个测试工程。
</pre><pre name="code" class="java"><instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.zzz" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <uses-library android:name="android.test.runner" /> </application>
单页测试是指对软件中最小的功能模块进行测试。
新建测试类,继承AndroidTestCase(自然可以定义多个测试类,最好跟要被测试的项目一一对应)
public class MainActivityTest extends ActivityTestCase { public void testOnCreate(){ assertEquals(true, true); System.out.println("--33"); assertEquals(false, true); } @Override protected void setUp() throws Exception { super.setUp(); } @Override protected void tearDown() throws Exception { super.tearDown(); } }setUp()在所有的测试用例执行之前调用,可在这里执行一些初始化操作。tearDown()会在所有的测试用例执行之后调用,可在这里进行一些资源的释放操作。
如何编写测试用例呢?只需定义一个以test开头的方法,测试框架就会自动调用这个方法了。然后我们在这个方法中通过断言(assert)的形式来期望一个运行结果,再和实际结果进行对比,这样一条测试用例就编写完了。
最后在测试工程中->Run As->Android JUint Test来运行这个测试用例。