C# 测试类可以有属性吗?

C# 测试类可以有属性吗?,c#,oop,unit-testing,testing,C#,Oop,Unit Testing,Testing,我正在为单元测试应用程序创建一个TestClass,我想做的一件事是运行一个测试方法,检查方法是否正确运行,根据结果在测试类内的class属性中存储一个值,然后在以后的方法中使用该值 我尝试过这样做,发现一旦编译器从一个方法移动到另一个方法,我设置的所有属性都会被清除。我使用断点进行了检查,在第一个方法的末尾,值位于属性中,然后在第二个方法的开头,相同的属性为null 查了这个,似乎没有其他人在尝试同样的事情,所以有可能在方法之间共享一个值,还是我采取了错误的方法 提前感谢。不是编译器,而是测试

我正在为单元测试应用程序创建一个TestClass,我想做的一件事是运行一个测试方法,检查方法是否正确运行,根据结果在测试类内的class属性中存储一个值,然后在以后的方法中使用该值

我尝试过这样做,发现一旦编译器从一个方法移动到另一个方法,我设置的所有属性都会被清除。我使用断点进行了检查,在第一个方法的末尾,值位于属性中,然后在第二个方法的开头,相同的属性为null

查了这个,似乎没有其他人在尝试同样的事情,所以有可能在方法之间共享一个值,还是我采取了错误的方法


提前感谢。

不是编译器,而是测试运行者(可能)为每个测试创建一个新实例


测试通常应该是独立的——即使你能找到一种让它工作的方法,我也会避免这样做。尽可能地设计你的方法。

你采取了错误的方法

根据定义,单元测试应该是完全独立和确定的。他们不应该相互依赖


您应该能够将第一个单元测试的重复部分重构为一个助手方法,该方法可以被其他单元测试调用。这项工作将进行两次,但单元测试应该非常快,因此开销应该非常小。

无论您使用什么测试框架,这对我来说都是一种糟糕的做法。所有自动化测试(更不用说正式的单元测试)都应该相互独立。静态字段/属性可能会起作用,但我建议您首先重构测试。

我假设您使用的是mstest?您可能需要一个静态属性可以使用静态类成员来存储值吗?