忽略 TearDown 或清理代码中的异常是否可以
Is it Ok to ignore exceptions in TearDown or cleanup code
我在自动化中有一个测试套件 运行。所有这些测试都是功能性 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()
功能不是我的测试用例的目的,所以我觉得这种方法很好。这是正确的还是我遗漏了什么?
Unit Testing
的一般模式是:Arrange
,Act
然后Assert
:AAA
。
Setup
只是以更好的方式 Arrange
测试的指定方法(例如,通过重新设置任何以前的 mocked/stubbed 对象来节省时间并避免代码重复).这绝不是强制性的,只是一种帮助测试编码人员更好地编写代码的方法。
TearDown
又是一个帮手,它比 Setup
更接近 AAA
的一般概念。这是因为在AAA
中没有提到任何关于销毁或清理的内容。
因此,请随意忽略 TearDown
中的任何失败,除非它在某种程度上很重要。也许你的眼睛里隐藏着一些东西,你还没有考虑到。对故障点进行另一个单元测试可能很重要,但这完全取决于您的情况。
我在自动化中有一个测试套件 运行。所有这些测试都是功能性 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()
功能不是我的测试用例的目的,所以我觉得这种方法很好。这是正确的还是我遗漏了什么?
Unit Testing
的一般模式是:Arrange
,Act
然后Assert
:AAA
。
Setup
只是以更好的方式 Arrange
测试的指定方法(例如,通过重新设置任何以前的 mocked/stubbed 对象来节省时间并避免代码重复).这绝不是强制性的,只是一种帮助测试编码人员更好地编写代码的方法。
TearDown
又是一个帮手,它比 Setup
更接近 AAA
的一般概念。这是因为在AAA
中没有提到任何关于销毁或清理的内容。
因此,请随意忽略 TearDown
中的任何失败,除非它在某种程度上很重要。也许你的眼睛里隐藏着一些东西,你还没有考虑到。对故障点进行另一个单元测试可能很重要,但这完全取决于您的情况。