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