Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么要使用ClassCleanup?_C#_.net_Unit Testing - Fatal编程技术网

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