ClassInitialize 似乎每次测试都会被调用。我想这是因为实际上为每个测试创建了一个新类。
为什么?所有其他框架都不会这样做!
无论如何...我需要在类上执行一种方法(不是静态的)。我还需要在类的同一个实例中执行所有测试方法。
我是在没有桨的小溪上吗?
ClassInitialize 似乎每次测试都会被调用。我想这是因为实际上为每个测试创建了一个新类。
为什么?所有其他框架都不会这样做!
无论如何...我需要在类上执行一种方法(不是静态的)。我还需要在类的同一个实例中执行所有测试方法。
我是在没有桨的小溪上吗?
ClassInitialize
在调用任何 s 之前由 MSTest 调用一次,请参见此处TestMethod
的备注。在每个测试方法之前调用一次。MSTest 为每个调用创建一个新的测试类实例。这就是为什么是静态方法。TestInitialize
TestMethod
ClassInitialize
我需要在类上执行一种方法(不是静态的)。我还需要在类的同一个实例中执行所有测试方法。
您的意思是您需要TestClass
在被测类(您实际测试的类)上执行一种方法吗?
在任何一种情况下,您都可以在 中拥有一个静态成员并在 中TestClass
对其进行一次初始化ClassInitialize
。它只会被创建一次,并且在您的测试的整个生命周期中都存在。您只能在其上调用一个方法一次。然后,您可以在每个测试方法中使用这个单一实例。
需要注意的一件事是 MSTest 可能会交错来自不同类的测试。因此,如果您有任何全局可变状态可以从多个状态访问ClassInitialize
(或对此进行测试),则可能会发生不可预知的事情。因此,最好避免静力学。
所有方法必须在同一个实例上执行的要求是非常不寻常的。也许有一种方法可以重构您的代码以消除这种约束?