【问题标题】:VS 2010 Unit testing code located on external drives?VS 2010 单元测试代码位于外部驱动器上?
【发布时间】:2013-07-27 04:34:24
【问题描述】:

我最近注意到,如果您在 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 从源代码文件夹所在的位置运行测试的地方?

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

相关问题/相同问题:How can I get “Copy to Output Directory” to work with Unit Tests?

【问题讨论】:

    标签: c# visual-studio-2010 unit-testing c#-4.0 mstest


    【解决方案1】:

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

    目前看来,这个问题的答案是使用部署项。

    【讨论】:

      【解决方案2】:

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

      • 测试代理
      • 测试控制器

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

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

      您的情况也是如此。您刚刚决定在本地 PC 上运行测试。但是,ControllerAgent 仍然是整个过程的一部分,Visual Studio 需要它们来执行测试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        • 2018-12-15
        • 2011-03-22
        • 2011-04-01
        相关资源
        最近更新 更多