gpt4 book ai didi

java - 未捕获的异常处理程序 - UiAutomator

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:24:01 28 4
gpt4 key购买 nike

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

有没有另一种方法可以监听测试失败/抛出的异常,而无需在每个测试的末尾专门添加该 boolean 值?

最佳答案

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

现在将您要测试的代码放入 try catch block 并在 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;
}

关于java - 未捕获的异常处理程序 - UiAutomator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24700180/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com