近期VSTS2010 Beta1 已经发布了,我们除了能够体验VSTS 2010为性能测试引入真实网络仿真这一新特性所带来的好处外,VSTS 2010还引入了另外一个新的特性,也就是支持在64位CLR中测试你的程序集了!这对那些想在64位CLR中执行测试的人来说无疑是个很好的消息!!在微软VSTS 2010 开发组成员Lonny的博客中也提及到了这一点,现将其翻译成中文,以供大家学习参考之用,若有不当之处敬请指正。也可以访问Lonny的blog查看英文版。
Visual Studio Team System 测试平台为运行测试提供了宿主进程。在Visual Studio 2008 中宿主进程只能在 32位模式中运行测试。作为一个 32 位进程,它仅限于在32 位 CLR中运行测试程序集,并被限制使用2GB 的内存。 現在 ,在Visual Studio 2010 中,我们添加了在 32或 64 位 CLR中从Visual Studio里执行测试,或在远程的负载代理上执行。它将允许你在测试中使用 > 2 GB 的内存(当在 64 位 CLR 上执行时) , 最重要的是能在 64 位 CLR中测试你的程序集。
怎样才能使我的测试在 64 位 CLR 上执行?
若要使你的测试程序集在 64 位 CLR 上执行,你需要做三件事:
1.设置你的测试程序集为针对 “任何 CPU” 平台
- 打开你的测试程序集的属性,选择“生成”选项卡,然后在目标平台下选择“任何 CPU ” 选项:
2.设置宿主进程平台标志为 “MSIL”
- 打开测试设置,然后选择“主机”(Hosts) 页
- 选择宿主进程平台(Host Process Platform) MSIL
3.在支持 64 位 CLR 的操作系统上运行测试
我想知道在尝试执行 64 位测试前需要知道什么?
当你尝试在 64 位 CLR 上执行测试之前,有几个概念我要解释。首先,有四种不同的方式可以编译你的测试程序集(“任何CPU”,“x64”,“x86”以及“Itanium”。这四种方式中,你能够编译你的程序集,但我们真正只支持(“任何CPU“和“x86”)。其次,当64位CLR可用时,为了强制支持在32位CLR上执行测试,我们引入了宿主进程平台(Host Process Platform) 标志的概念。此标志具有两个设置 (“MSIL”和 “x86”),并允许你指定希望如何执行你的测试。
MSIL |
这意味着,如果主机进程 (Visual Studio 或 Load Agent) 运行在 64 位操作系统上并且64 位 CLR 可用,且没有什么东西正在阻止该程序集在64 位模式下运行,那么测试程序集将 64 位 CLR 上执行。 如果有任何不满足上述情况的地方,那么该程序集将在32 位 CLR上执行测试。 注: 这并不能保证它将在64 位 CLR 上执行 |
x86 |
这意味着测试程序集将在32 位 CLR是否可用上执行无论64 位 CLR 注意:这是默认设置 |
在Visual Studio 2008 里,测试是在 VSTestHost.exe 进程或 QTAgent.exe 进程中执行。在Visual Studio 2010 里,这个作了更改。现在所有测试程序集或者在QTAgent32.exe进程中执行 或在QTAgent.exe中执行。至于是哪个进程则是由计算机操作系统的 “位数” 和宿主进程平台标志共同决定的。下表描述了哪个进程将被启动和测试程序集将执行在哪个版本的CLR。
操作系统 |
宿主进程平台标志 |
测试宿主进程 |
CLR |
32 位 |
x86 |
QTAgent32.exe |
32 位 |
MSIL | |||
64 位 |
x86 |
QTAgent32.exe |
32 位 |
MSIL |
QTAgent.exe |
如果64 位可用的那么64位,否则32 位 |
正如我早前所说,我们真正只支持针对“任何 CPU ” 或 “ x86 ” 平台的测试程序集。 在特定的条件下,你可能能够运行那些针对“x64”平台测试程序集。但是对于某些测试类型(特别是单元测试),MSTest.exe需要将测试程序集加载到它自己的进程。 由于 MSTest.exe 一个 32 位进程,测试程序集要能够正确地被加载到一个 32 位的进程中(换句话说它必须针对“x86” 或 “ 任何 CPU ”架构)。这意味着如果你有意针对x64目标 平台,并且你正在使用这些测试类型的其中之一,不管该宿主进程平台标志的设置,测试程序集将无法被加载并且测试将被中止。此外,因为 JET 数据库仍然是一个 32 位应用程序,当在 64 位 CLR 上执行测试程序集时CSV(以及任何需要 JET 数据库的数据源)不会被支持。
在哪可获得64 位Load Agent安装程序?
您可以通过下列链接获取英文版本的Visual Studio Team System 2010 Test Load Agent Beta 1:
虽然那没有64位Load Agent 安装程序,但是不用担心,因为当标准的32位Team Test Load Agent安装时,能执行64位测试的二进制文件也随即被安装了。