C# 为什么要使用ClassCleanup?
目前我正在测试C# 为什么要使用ClassCleanup?,c#,.net,unit-testing,C#,.net,Unit Testing,目前我正在测试.NET Framework的单元测试功能,因此遇到了[TestInitialize][TestCleanup][ClassInitialize]和[ClassCleanup]。为什么我要使用[ClassCleanup],因为我无法想出任何可以有效使用[ClassCleanup]的方案 我认为它可能类似于[TestCleanup]在每次[TestMethod]之后进行清理,但是[ClassCleanup]是在运行所有测试之后调用的,而不是在每次测试之后调用的(如我所解释的)。这就是
.NET Framework
的单元测试功能,因此遇到了[TestInitialize][TestCleanup][ClassInitialize]
和[ClassCleanup]
。为什么我要使用[ClassCleanup]
,因为我无法想出任何可以有效使用[ClassCleanup]
的方案
我认为它可能类似于[TestCleanup]
在每次[TestMethod]
之后进行清理,但是[ClassCleanup]
是在运行所有测试之后调用的,而不是在每次测试之后调用的(如我所解释的)。这就是为什么我不知道如何使用它或者是否使用它的原因(现在我根本不使用它)
请随意向我解释,并提前感谢!:) 您可能希望使用它来清理在
ClassInitialize
中创建的资源。假设您想要为所有测试方法都应该能够使用的测试类旋转一个数据库。您可以在ClassInitialize
中创建它,并在ClassCleanup
中销毁它。您可能希望使用它来清理在ClassInitialize
中创建的资源。假设您想要为所有测试方法都应该能够使用的测试类旋转一个数据库。您可以在ClassInitialize
中创建它,并在ClassCleanup
中销毁它,但是如果我完成了测试,那么[ClassInitialize]
中的所有数据集都将被删除,或者我缺少了什么?Argh。。我正要发这个。我通常处理的项目中,至少有一半是设置表/存储过程/etc,以便在给定的一组测试中使用。我们用ClassCleanup
@JieBäf-No。。。你怎么会这么想?这就是清理的目的。你需要告诉它清理什么。它不仅仅是自动反向运行ClassInitialize
。一旦我运行了所有测试,所有保存到内存中的数据不是都被删除了吗?@JieBäf noone会清理您手动分配的资源。是的,CLR将调用析构函数和所有jazz,但是任何外部资源(文件、数据库)都保持不变。但是如果我完成了测试,则[ClassInitialize]
中的所有数据集都将被删除,或者我缺少了什么?Argh。。我正要发这个。我通常处理的项目中,至少有一半是设置表/存储过程/etc,以便在给定的一组测试中使用。我们用ClassCleanup
@JieBäf-No。。。你怎么会这么想?这就是清理的目的。你需要告诉它清理什么。它不仅仅是自动反向运行ClassInitialize
。一旦我运行了所有测试,所有保存到内存中的数据不是都被删除了吗?@JieBäf noone会清理您手动分配的资源。是的,CLR将调用析构函数和所有jazz,但是任何外部资源(文件、数据库)都保持不变。想象一下您在ClassInitialize
中为测试用例创建了一些临时文件。你可能想在最后摆脱他们。这是有道理的,但它不适用于我的情况,因为我没有创造任何临时工files@JieBäf-如果您没有创建任何外部资源,那么您就不需要ClassCleanup
。想象一下您在ClassInitialize
中为您的测试用例创建了一些临时文件。你可能想在最后摆脱他们。这是有道理的,但它不适用于我的情况,因为我没有创造任何临时工files@JieBäf-如果您没有创建任何外部资源,那么您就不需要ClassCleanup
。