测试类可以具有属性吗?

时间:2012-07-31 16:41:33

标签: c# oop unit-testing testing

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

我尝试过这样做,发现只要编译器从一个方法移动到另一个方法,我设置的所有属性都会被清除干净。我已经检查了断点,并在第一个方法的末尾,值在属性中,然后在第二个方法的开头,相同的属性为null。

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

提前致谢。

3 个答案:

答案 0 :(得分:5)

你采取了错误的做法。

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

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

答案 1 :(得分:2)

这不是编译器 - 它是测试运行器,它(可能)为每个测试创建一个新实例。

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

答案 2 :(得分:1)

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

相关问题