是否可以在TearDown或清理代码中忽略异常?

本文关键字:代码 异常 TearDown 是否 | 更新日期: 2023-09-27 18:11:50

我有一个运行在自动化中的测试套件。所有这些测试都是功能UI测试。如下图

[SetUp]
public void Setup()
{
    CreatePolicy();
}    
[Test]
public void Test1()
{
    EditPolicyAndValidateResults();
}
[Test]
public void Test2()
{
   EditPolicyAndValidateResults();
}
[TearDown]
public void TearDown()
{   
    DeletePolicy();
}

现在,问题是DeletePolicy()有时失败(随机为一个或两个测试),因此相应的测试失败。为了避免失败,我在DeletePolicy()中添加了一个try catch块,它看起来如下所示:

[TearDown]
public void TearDown()
{
    try
    {
        DeletePolicy();
    }
    catch(Exception ex)
    {
        // Do nothing
    }
}

因为测试DeletePolicy()函数不是我的测试用例的目的,所以这个方法对我来说很好。这是正确的还是我遗漏了什么?

是否可以在TearDown或清理代码中忽略异常?

Unit Testing的一般模式为:Arrange, Act然后Assert: AAA

Setup只是以更好的方式指定Arrange测试的方法(例如,通过重新设置任何以前模拟/存根的对象来节省时间并避免代码重复)。这绝不是强制性的,只是帮助测试程序员更好地编写代码的一种方法。

TearDown同样也是一个助手,它比Setup更接近AAA的通用概念。这是因为在AAA中没有提到任何关于破坏或清理的内容。

所以,可以随意忽略TearDown中的任何失败,除非它在某种程度上很重要。也许有些东西隐藏在你的眼睛里,你还没有考虑到。在故障点上进行另一个单元测试可能很重要,但这完全取决于您的情况。