.net - 我可以强制 MSTest 为每次测试运行使用新进程吗?

标签 .net visual-studio pinvoke mstest

我们使用 VS 2010 测试运行器 (MSTest) 进行自动化功能测试。当我们从 Visual Studio 运行测试时,VS 创建一个名为 QTAgent32.exe 的进程,并在该进程中运行测试。

我们发现,当我们进行多次测试运行时,MSTest 将重用同一个 QTAgent32 进程——进程 ID 不会改变。这对我们来说是个问题,因为我们正在测试的代码是对非托管 DLL 的 P/Invoking。在进程的生命周期内,DLL 只需要初始化一次。我们有一个 [AssemblyInitialize] 方法,但每次测试运行都会执行一次。如果我们执行多次测试运行,它将在同一个进程中执行多次。

每次我们进行测试运行时,MSTest 都会创建一个新的应用程序域;但是这些应用程序域都在同一个进程中。

所以我想知道:有没有办法告诉 Visual Studio 测试运行器在我们每次运行测试时使用一个新进程?我查看了“.testsettings”配置,但没有看到任何相关内容。

最佳答案

不知道你想用它走多远,但一种解决方案可能是创建你的单元测试主机

http://technet.microsoft.com/fr-fr/query/bb166558

此链接显示了如何创建适配器,然后您还可以为 evertest 启动一个新进程,创建管道通信并在测试后将其拆除。

我知道 MS 本身使用不同的主机在痣下运行测试

http://research.microsoft.com/en-us/projects/pex/molestutorial.pdf

关于.net - 我可以强制 MSTest 为每次测试运行使用新进程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8189657/

相关文章:

c# - 如果给定窗口句柄,我如何确定窗口句柄是否是 Windows UI 的一部分而不是应用程序?

c++ - 在 Visual Studio 中使用 C++ 中的 GStreamer

c# - 使用 P/Invoke 在托管和非托管回调链上引发异常

c# - 每个请求的 log4net.GlobalContext.Properties 是否不同?

c# - .NET 4.5 中 List<T>.Sort 的行为从 .NET 4.0 改变了吗?

visual-studio - 强制 Visual Studio 从光标处查找

.net - 在部署环境之间管理复杂的 Web.Config 文件

c# - 这个简单的 C++ DLL 在 C# 中不起作用

c# - 无法加载文件或程序集 'Newtonsoft.Json'

c# - 如何实现二维矩阵的Kadane算法