在Visual Studio 2010中,我们推出了运行并行测试的功能,现如今许多机器有多个CPU或一颗CPU有多核,因此我们认为如果测试时利用机器上的所有处理器或所有处理核心,那一定很有意义。同时,还可以有效地提高同一时间测试运行的次数,因此可以缩短运行所有测试的时间。
决定
我们研究了所有不同的测试类型和我们已有的功能,做出了下列决定:
1、我们支持多CPU/核执行的唯一测试类型是单元测试。我们是基于后面这几个因素做出这个决定的:测试类型是UI测试吗?测试已经实现了某些形式的并行执行吗?测试类型托管在不同的主机适配器上吗(我们可能无法控制测试如何执行)?依赖性测试能保证按一定的顺序正确执行吗?测试是一个单元测试扩展吗?这些问题的答案迫使我们选择只支持单元测试。
2、数据适配器(Data Adapters)无法启用。因为数据收集是基于测试事件的,数据收集时如果有多个测试任务正在执行,将会减缓测试的速度,此外,数据本身可能被错误地隔离到特定的测试中,但可能包括来自其他测试的数据和信息。
3、这种情况仅会发生在通过Visual Studio或MSTest执行本地测试时。因为远程测试允许你跨多个代理划分测试,我们决定对远程执行不启用此方案,此外,目前仅适用于Visual Studio或MSTest。
需求
你可能已经等不及要问我,快告诉我需要做什么!
好,但我首先要提醒你,虽然再明显不过了,但我还是要说,那就是你需要准备一台多处理器或多核的机器,可以使用虚拟机,但你要保证宿主主机是多CPU的,最简单的方法就是打开任务管理器进行验证。
图 1 使用任务管理器查看是否是多CPU/核
我的机器只有一颗CPU,但是双核的。
另外,你的测试必须是线程安全的,只有你自己才能确保它们是,如果不能保证,就可能导致不正确的结果、死锁和许多头痛的问题。
如何启用并行测试执行
1、确保你有一台多CPU/核机器;
2、确保你只运行单元测试;
3、确保你的测试是线程安全的;
4、确保你的数据适配器没有开启;
5、确保你在本地运行测试;
6、修改你的测试设置文件。在测试设置文件上点右键,选择“用…打开”
图 2 准备打开测试设置文件
6.1以xml格式打开
图 3 以xml格式打开
6.2 在Execution元素上设置parallelTestCount属性
图 4在Execution元素上设置parallelTestCount属性