.net - TFS 在构建服务器上不部署引用的程序集来测试目录

标签 .net unit-testing mstest coded-ui-tests

我有 Coded-UI 测试项目,其中引用了解决方案中的其他程序集。不知何故,有些程序集没有复制到 TestResults/Out目录,而其他则被复制。所有组件都有 Copy Local选项 true (不知道它是否真的很重要)并且在其他选项中绝对平等。当我从 VS2010 本地开始测试时,所有程序集都会被复制,但在构建服务器上时不会。

如果我使用 [DeploymentItem]属性来强制部署他们成功部署的这些“顽皮”程序集。

我无法理解 - 我一直认为,如果您引用程序集(在 ReferencesSolution Explorer 部分),该程序集将被复制到 TestResults/Out[DeploymentItem]需要复制一些 .xml 和其他配置文件。

最佳答案

我以前见过这个。您的测试项目引用了其他项目,但是当测试运行时,您会注意到 TestRun Out 文件夹中不存在这些程序集。

与从固定位置运行单元测试的其他测试运行器不同,MSTest 将其所需的程序集复制到执行测试的测试运行文件夹中。该设计允许您比较测试运行之间的测试结果、覆盖率和输出。

常见的误解是,像“Copy Local”这样的编译设置会以某种方式影响用于测试的依赖项,这根本不是真的。 MSTest 使用反射 以确定测试运行所需的程序集引用。

您看到的错误可能是因为您引用了程序集,但测试程序集没有直接使用它。您可以通过使用 IL 检查实用程序(DotPeek、Reflector 等)查看测试装配引用来验证这一点。 (这通常是在 XAML 中引用程序集的 WPF 项目中的问题。)

要修复,请使用 DeploymentSettings 将程序集复制到输出文件夹;或在测试项目中使用程序集。例如,将以下内容添加到您的测试项目将发出 IL,以确保已部署程序集:

var type = typeof(AssemblyNotBeingCopied.MyClass);

关于.net - TFS 在构建服务器上不部署引用的程序集来测试目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15241965/

相关文章:

c# - 当我的应用程序使用 MSMQ 消息但随后失败时会发生什么?

c# - 我可以将它与字节一起用于其他类型的值/对象吗?

angular - karma测试时如何打印log

javascript - 如何模拟在我正在测试的函数内部调用的函数?

TFS 2015 内部版本 : Test results not being published

c# - .Net Core Connection 目前有事务登记

c# - 在 XElement 上选择具有命名空间别名而不是 URI 的命名空间 XML 节点属性

c# - KeyEventArgs.KeyData、KeyEventArgs.KeyCode 和 KeyEventArgs.KeyValue

.net - Visual Studio 项目构建为可执行文件和 DLL

c# - 调试器跳过 VS 2012 中的最新 checkin 代码 - 适用于 VS 2010