是否可以在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()
函数不是我的测试用例的目的,所以这个方法对我来说很好。这是正确的还是我遗漏了什么?
Unit Testing
的一般模式为:Arrange
, Act
然后Assert
: AAA
。
Setup
只是以更好的方式指定Arrange
测试的方法(例如,通过重新设置任何以前模拟/存根的对象来节省时间并避免代码重复)。这绝不是强制性的,只是帮助测试程序员更好地编写代码的一种方法。
TearDown
同样也是一个助手,它比Setup
更接近AAA
的通用概念。这是因为在AAA
中没有提到任何关于破坏或清理的内容。
所以,可以随意忽略TearDown
中的任何失败,除非它在某种程度上很重要。也许有些东西隐藏在你的眼睛里,你还没有考虑到。在故障点上进行另一个单元测试可能很重要,但这完全取决于您的情况。