gpt4 book ai didi

unit-testing - MSTest ClassInitialize 整个类(class)一次

转载 作者:行者123 更新时间:2023-12-04 10:04:58 25 4
gpt4 key购买 nike

似乎每次测试都会调用 ClassInitialize。我想这是因为实际上为每个测试创建了一个新类。

为什么?所有其他框架都不会这样做!

无论如何......我需要在类上执行一种方法(非静态)。我还需要在类的同一实例中执行所有测试方法。

我是在没有桨的小溪上吗?

最佳答案

ClassInitialize在任何 TestMethod 之前由 MSTest 调用一次s 被调用,见备注 here . TestInitialize在每个测试方法之前调用一次。 MSTest 为每个 TestMethod 创建一个测试类的新实例称呼。这就是为什么ClassInitialize是一个静态方法。

I need to execute one method (not static) on the class. I also need to execute all the test methods within the same instance of the class.



您的意思是您需要在 TestClass 上执行一种方法吗?或正在测试的类(class)(您实际测试的类(class))?

无论哪种情况,您都可以在 TestClass 中拥有一个静态成员。并在 ClassInitialize 中初始化一次.它将只创建一次并在测试的整个生命周期内存在。您只能对其调用一次方法。然后,您可以在每个测试方法中使用这个单一实例。

需要注意的一件事是 MSTest 可能会交织来自不同类的测试。因此,如果您有任何全局可变状态可以从多个 ClassInitialize 访问(或为此进行测试),可能会发生不可预测的事情。因此,最好避免静电。

所有方法必须在同一个实例上执行的要求是非常不寻常的。也许有一种方法可以重构您的代码以消除这种约束?

关于unit-testing - MSTest ClassInitialize 整个类(class)一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11566643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com