【发布时间】:2014-09-02 05:22:06
【问题描述】:
我想让 UiAutomator 在测试失败时截取屏幕截图。我目前的设置方式是这样的:
@Override
protected void setUp() throws Exception {
System.out.println("Beginning setup...");
testFailed = true;
}
@Override
protected void tearDown() throws Exception {
if(testFailed)
getUiDevice().takeScreenshot("/sdcard/Pictures/Screenshots/failure.jpg");
}
那么个人测试就是这样工作的
public void testExample(){
/* do stuff */
testFailed = false;
}
想法是,如果抛出异常,testFailed 永远不会设置为 false,并且在测试后调用 tearDown 时会截屏。
我真的希望能够在我的代码中添加一个 testListener 或未捕获的异常处理程序,以便更优雅地解决这个问题。但是,UiAutomator 有自己的未捕获异常处理程序,它覆盖了我尝试实现的异常处理程序。我可以添加我的未捕获异常处理程序,但它只是被忽略了。
有什么方法可以添加一个未捕获的异常处理程序,它会在它们被抛出的位置和 UiAutomator 的未捕获异常处理程序之间拦截异常,然后将它们传递(到 UiAutomator)?
是否有另一种方法可以让我监听测试失败/抛出的异常,而无需在每个测试的末尾专门添加该布尔值?
【问题讨论】:
标签: java junit exception-handling android-uiautomator uncaught-exception