C# 从生成输出运行单元测试

C# 从生成输出运行单元测试,c#,.net,visual-studio,unit-testing,C#,.net,Visual Studio,Unit Testing,我需要从已经存在程序集的程序集运行单元测试。Visual Studio(2012)正在将该程序集复制到某个生成的部署位置,并从该位置进行测试。我怎样才能防止呢 根据上的本页,只有在使用DeploymentItem属性时,才会将单元测试部署到某些目录 如果使用Visual Studio运行测试,则部署文件夹将在解决方案文件夹的TestResults下创建。 如果测试运行中的任何测试方法或类具有DeploymentItem属性,或者如果使用.testsettings文件,则使用单独的部署文件夹 我没

我需要从已经存在程序集的程序集运行单元测试。Visual Studio(2012)正在将该程序集复制到某个生成的部署位置,并从该位置进行测试。我怎样才能防止呢

根据上的本页,只有在使用DeploymentItem属性时,才会将单元测试部署到某些目录

如果使用Visual Studio运行测试,则部署文件夹将在解决方案文件夹的TestResults下创建。 如果测试运行中的任何测试方法或类具有DeploymentItem属性,或者如果使用.testsettings文件,则使用单独的部署文件夹

我没有任何DeploymentItem属性,但是以下测试失败,因为单元测试是从某个生成的目录运行的,而不是从构建输出目录运行的。我还尝试创建一个.runsettings文件,并确保未选中“启用部署”,但Visual Studio似乎忽略了这一点

[TestClass]
public class UnitTests
{
    private void RunAssemblySelfTests(string assemblyName)
    {
        Assembly assembly = Assembly.LoadFrom(assemblyName + ".dll");
        //...load and run tests that use in-house testing framework
    }

    [TestMethod]
    public void MyAssemblyTest()
    {
        RunAssemblySelfTests("MyAssembly");
    }
}
UnitTests程序集的构建输出目录与MyAssembly的目录相同,我已经确认它们都存在于那里。运行时,由于以下异常,测试失败:

结果消息:

测试方法MyNameSpace.UnitTests.MyAssemblyTest引发异常: System.IO.FileNotFoundException:无法加载文件或程序集 '文件:///[解决方案路径]\SolutionName\TestResults[用户 名称]\uu[计算机名称]2013-08-28 13\u 35\u 10\Out\MyAssembly.dll'或一个 它的依赖性。系统找不到指定的文件


我无法部署任何测试程序集,即使没有这种反射,因为依赖关系会导致几个GB。

我终于找到了答案。尽管解决方案中没有对这些VS 2010遗留文件的引用,但VS 2012出于某种原因仍在使用它们。删除它们都修复了问题:

  • [SolutionName].testrunconfig
  • [SolutionName].vsmdi

Visual Studio仍然创建TestResults文件夹,但它不再部署该文件和整个解决方案的源代码。

我终于找到了答案。尽管解决方案中没有对这些VS 2010遗留文件的引用,但VS 2012出于某种原因仍在使用它们。删除它们都修复了问题:

  • [SolutionName].testrunconfig
  • [SolutionName].vsmdi

Visual Studio仍然会创建一个TestResults文件夹,但它不再部署该文件和整个解决方案的源代码。

“因为依赖关系会导致几GB”听起来不太适合单元测试。。。也许重新思考代码组织和测试可能是更好的方法。@AlexeiLevenkov TestAssembly->AssemblyUnderTest->big-fat dependency tree。最重要的是,VisualStudio复制了所有的源代码,大约有800MB。为什么我要被迫以这种方式进行隔离测试?甚至MSDN页面也说,禁用部署以节省复制文件的时间可能更可取。“因为依赖关系会导致几GB的数据”听起来不太适合单元测试。。。也许重新思考代码组织和测试可能是更好的方法。@AlexeiLevenkov TestAssembly->AssemblyUnderTest->big-fat dependency tree。最重要的是,VisualStudio复制了所有的源代码,大约有800MB。为什么我要被迫以这种方式进行隔离测试?甚至MSDN页面也说,禁用部署以节省复制文件的时间可能更可取。+1!(为了使更改生效,我必须重新启动Visual Studio。)+1!(为了使更改生效,我必须重新启动Visual Studio。)