C++ VS2012-禁用并行测试运行
我在VisualStudio2012测试框架中运行了一些单元测试(c++) 据我所知,这些测试是并行运行的。在这种情况下,测试是相互影响的-我不想并行运行它们 例如,我有两个测试,其中我添加了断点,它们按以下顺序命中:C++ VS2012-禁用并行测试运行,c++,unit-testing,visual-studio-2012,parallel-processing,C++,Unit Testing,Visual Studio 2012,Parallel Processing,我在VisualStudio2012测试框架中运行了一些单元测试(c++) 据我所知,这些测试是并行运行的。在这种情况下,测试是相互影响的-我不想并行运行它们 例如,我有两个测试,其中我添加了断点,它们按以下顺序命中: Test1测试类初始化 Test2测试类初始化 Test2测试方法 Test1测试方法 如果先运行Test1的init,那么在启动任何与Test2相关的测试之前,它的所有测试方法都应该运行到完成 在做了一些网络搜索之后,我感到非常困惑。我读到的每一件事都说明了这一点,而你必须跳转
设置
和拆卸
方法。命名约定因框架而异,Setup
可能在每个或TestInitialize
之前调用,TearDown
也可能在每个
或TestCleanup
之后显示为。NUnit、MSTest和xUnit.net的名称可以在上找到
一个简单的示例应用程序:
- 它应该读取一个配置文件
- 它应该验证配置文件是否有效
- 它应该更新用户的配置
我将如何构建和测试这一点:
- 有一个读取配置的方法,第二个方法验证它
- 为用户设置一个getter/setter
- 测试读取方法,如果它返回所需的结果(对象、字符串或您设计的方式)
- 创建您期望从read方法得到的模拟配置,并测试该方法是否接受它
- 此时,您应该创建多个模拟配置,测试所有可能的场景,看看它是否适用于所有可能的场景,并相应地进行修复。这也叫,
- 创建已接受配置的模拟对象,并使用setter更新用户的配置,然后使用检查其设置是否正确
这是教育的基本原则
如果测试套件按照描述进行了设置,并且所有测试都通过,那么所有这些连接在一起的部件都应该能够完美地工作。额外的测试,例如测试,并不一定是必需的,我使用它们只是为了确保整个应用程序流程正常工作,并轻松捕获错误(例如http连接错误)。虽然我认为你在这篇文章中有很多重要的话要说,但我不同意这种说法“如果测试以同步或异步方式执行,这永远不应该是一个问题”。如果我无法控制哪些测试以异步方式运行,如何保证预期状态?我添加了一个示例,它可能会帮助您理解依赖性注入(模拟对象)的概念。我钦佩你的坚韧不拔,尽管我仍在努力理解这一切与异步运行的测试之间的关系。因此,我将再次询问,如果我无法控制哪些测试正在异步运行,我如何保证预期的状态?@dtmland我想maremp的观点是,单元测试之间不应该存在任何共享状态。如果不是这样的话这里没有共享状态,那么无论测试是同步运行还是异步运行,测试中任何一点的预期状态都是确定的。感谢您的解释@Lilshieste,这正是我想要解释的。