1

我最近注意到,如果您在 VS 2010 或 12 中运行的源代码与您选择的 IDE 的运行位置不同,那么可能会观察到一些奇怪的行为。

var location = Assembly.GetExecutingAssembly().Location;

我有一个简单的 MSTest 单元测试,它运行上述内容并产生以下内容:

C:\Users\Ibrar\AppData\Local\Temp\ckiwsrev.qh0\A-----.Main.Tests\assembly\dl3\7e61424f\b0b1ebcc_318ace01\A----.Main.Tests.dll

即使我的源代码位于外部驱动器上......任何人都可以解释为什么这似乎被复制并粘贴到 AppData 文件夹中并从那里运行?

是否有任何地方强制 VS 从源代码文件夹所在的位置运行测试?

我怀疑这可能与信任、安全和权限有关?

链接的问题/相同的问题:如何让“复制到输出目录”与单元测试一起使用?

4

2 回答 2

2

这是预期的行为。安装 Visual Studio 时,它还安装了 2 个额外的服务:

  • 测试代理
  • 测试控制器

这些服务用于执行测试。当您run从 Visual Studio 中点击时,它会将包含所有源的请求发送到可用和选定Test Controller的源,然后后者将相同的请求发送到连接到它的所有代理,并与他们共享他们必须执行的测试。

每个agentcontroller可以安装在网络中的任何机器(物理或非物理)上。因此,必须将源代码复制到每台机器上的特定文件夹中,以便每个代理都可以访问它。他们不可能访问您本地电脑上的代码。

在您的情况下也会执行相同的程序。您刚刚决定在本地 PC 上运行测试。但是,ControllerAgent仍然是整个过程的一部分,Visual Studio 需要它们才能执行测试。

于 2013-07-27T08:58:44.837 回答
0

基本上,据我所知,似乎没有办法强制 VS 直接从 bin 文件夹运行您的测试。

似乎现在的答案是使用部署项。

于 2013-07-28T12:30:21.430 回答