2.7 调试用例
当然,大家应该想到的是,你的测试用例代码也可能有问题。于是,通常都要调试用例,并且在LogCat中打印日志信息以便调试。还有一种更复杂的办法,就是启动调试工具来调试,有两种方式。
第一种方式更简单:利用Eclipse的便利性,不需要去记复杂的命令行选项。在最新版的AndroidADT插件中,有选项 Debug As | Andriod Junit Test。然后,你可以在测试用例中设置断点调试代码。
设置断点的方式就是在编译器中选中你要暂停的那行,然后利用菜单选项“执行|切换行”断点。这样你就可以轻松地将你测试代码切换成调试模式,等待调试器连接上就可以了。不用担心,这个特别简单。在你想要调试的测试用例中添加下面这小段代码。加在哪里并没有关系,因为调试器总是停留在你设置断点的地方。这种情况下,我们决定在构造器中添加Debug.waitForDebugger( ),如框2.10所示。
框2.10 测试用例中添加debug代码
public class MyFirstProjectTests extends TestCase {
private static final boolean DEBUG = true;
public MyFirstProjectTests(String name) {
super(name);
if ( DEBUG ) {
Debug.waitForDebugger();
}
}
当你像往常一样执行测试用例,单击 Run As | Andriod Junit Test,你可能看到这样一个窗口,要求你转换视图,如图2.11所示。
图2.11 视图转换提示框
一旦切换之后,你将会看到一个标准的调试界面和会话。另外,如果你不能或者不想改变你测试的代码,那么可以设置断点之后,在am instrument命令后加上下面的项目,如表2.10中描述。
表2.10 打开debug选项
当你开始测试执行的时候,测试执行器会等待调试器连接上来。调试用例的命令行如框2.11所示。
框2.11 连接调试器命令
$ adb shell am instrument -w -e debug true com.example.aatg.
myfirstproject.test/android.test.InstrumentationTestRunner
等待调试进入到你断点这行时,你会看到下面这行,如框2.12所示。
框2.12 debug断点行时,看到的日志
com.example.aatg.myfirstproject.test.MyFirstProjectTests:
当调试器连接上之后,这行才会消失,调试会话框才会出来。