2012-08-26 52 views
29

我很好奇,为什么灯具设置必须是静态的?对于我来说,让每个灯具有实例变量来分享灯具的使用寿命似乎更直观。为什么ClassInitialize方法必须是静态的?

是的,这些都可以在构造函数中初始化,但是我假设它们已经超出了测试运行器的控制范围。

什么样的设计要求或哲学认为设置方法应该是静态的?

回答

38

具有ClassInitialize属性的方法对类中的所有测试运行一次。每次运行测试时都会创建一个类的实例,所以它必须是静态的,以便只运行一次。

如果要为每个测试初始化​​,则可以使用TestInitialize属性,该属性将在创建类的新实例(运行测试之前)时运行。

如果您需要更多的信息,你可以看看:

That Pesky MSTest Execution Ordering

+11

谢谢,我不知道一个实例是为每个测试创建。 – ProfK

+5

我不认为这个方法只能静态运行一次。测试框架正在初始化并执行我们正确的测试类。它可以在运行所有测试方法之前和之后轻松调用非静态方法。 – d512

+0

如果它不是静态的,则初始化不能与所有测试实例共享。即如果您需要初始化所有测试使用的模拟服务。 – user3285954

相关问题