2012-07-31 73 views
0

我为单元测试一个应用程序创建一个TestClass,我想要做的一件事是运行一个测试方法,检查方法已经正确运行,将测试类中的类属性存储在基于结果的值中,然后在以后的方法中使用该值。测试类可以有属性吗?

我试过这样做,发现只要编译器从一种方法移动到另一种方法,我设置的所有属性都擦干净。我已经检查了断点,并且在第一个方法结束时,该值在属性中,然后在第二个方法的开始处,该属性为null。

看着这个,没有人似乎在尝试同样的事情,所以有可能在方法之间共享一个值,或者我采取了错误的方法吗?

在此先感谢。

+0

我假设你正在使用mstest? – 2012-07-31 16:42:52

+0

您可能需要一个静态属性 – jpm 2012-07-31 16:43:26

+0

您不能使用静态类成员来存储值吗? – 2012-07-31 16:43:34

回答

5

您正在采取错误的做法。

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

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

2

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

测试通常应该是独立的 - 即使你可以找到一种方法来使这个工作,我会避免这样做。尽你所能设计你的方式。

1

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

相关问题