繁体   English   中英

Uncaught Exception Handler - UiAutomator

[英]Uncaught Exception Handler - UiAutomator

我想让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)?

有没有另一种方法可以监听测试失败/抛出异常而无需在每次测试结束时特别添加布尔值?

而不是在拆解时调用getUiDevice()。takeScreenshot()将其放入函数中 - 比如说foo()并在异常发生时调用它。

现在将要测试的代码放在try catch块中并在catch调用foo()中。 有点像这样 -

try{
//add your test code here
}
catch(Exception e){
foo();
//and if you want to throw exception again so your current test flow is not disturbed then add
throw e;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM