You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NUnit调用Assert.Pass后抛出无明确原因AssertionException问题咨询

问题根因
  • NUnit 框架中Assert.Pass()、Assert.Fail()这类断言方法,本身就是通过抛出特定异常来通知框架测试结果、终止测试执行的。其中Assert.Pass()会抛出继承自Exception类的SuccessException,会被你代码中无差别捕获所有异常的catch (Exception ex)逻辑捕获。
  • 你在catch块中又调用了Assert.Fail(),直接覆盖了之前的通过标记,因此测试最终被判定为失败。
修复方案

你可以调整异常捕获规则,不要捕获NUnit框架自身的断言相关异常即可,两种常见实现:

  1. 异常过滤,排除NUnit的断言类异常
catch (Exception ex) when (!(ex is NUnit.Framework.AssertionException) && !(ex is NUnit.Framework.SuccessException))
{
    new SupportClasses.ScreenShot().Take(_driver, false);
    Assert.Fail(); 
}
  1. 仅捕获你预期的UI自动化过程中可能出现的异常,比如WebDriver的元素不存在、超时等异常,不要使用无差别的全局异常捕获。

内容的提问来源于stack exchange,提问作者Damo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:27:05