我有一个在负载测试中使用单元测试的紧迫问题。
运行每个测试方法后如何保存单元测试类的全局变量?例如,我在单元测试类中有一个全局变量,TestMethod1修改了这个变量,我希望TestMethod2在运行后(由负载测试的虚拟用户)调用时可以使用这个变量(及其修改后的值)测试方法 1。
我的负载测试的设置:测试混合模型基于顺序,负载模式是恒定的(5 个用户),运行设置:使用指定的迭代(迭代 = 5 * 方法数)。
我使用 VS2012 终极版。
你有什么想法吗?
提前致谢!
龙边
我有一个在负载测试中使用单元测试的紧迫问题。
运行每个测试方法后如何保存单元测试类的全局变量?例如,我在单元测试类中有一个全局变量,TestMethod1修改了这个变量,我希望TestMethod2在运行后(由负载测试的虚拟用户)调用时可以使用这个变量(及其修改后的值)测试方法 1。
我的负载测试的设置:测试混合模型基于顺序,负载模式是恒定的(5 个用户),运行设置:使用指定的迭代(迭代 = 5 * 方法数)。
我使用 VS2012 终极版。
你有什么想法吗?
提前致谢!
龙边
使用全局变量让单元测试相互交互并不是一个好习惯。每个单元测试都应该以原子方式运行,并测试特定的行为。
如果您需要共享某种设置行为,我会为此使用 SetUp 属性。
[TestInitialize]
public void Setup()
{
// initialize whatever common functionality for your tests
}
您不想让测试用例相互依赖,因为根据测试运行器设置(例如并行),测试的顺序可能会有所不同。
如果您有非常测试特定的设置行为,我会为该特定测试创建一个专用的测试类。
您可以考虑使用 BDD 工具,例如 Specflow 或 Storevil。这些可以设置测试“场景”,您可以使用它来协调现有的单元测试,同时仍然让它们可以单独运行。
对于上下文共享,这两个工具都支持整个场景的数据存储,测试可以将数据推送到或从中获取数据。这将需要自己修改测试,它们将不再是真正的单元测试,但听起来单元测试并不是你的目标。