VS2012 & TFS2012 单元测试主要问题

2024-05-06

我们使用 VS2012 和 TFS2012 并为我们的代码编写单元测试。我们想要报告代码覆盖率,并在单元测试中使用 .config 文件来测试应用程序设置,以及一些其他日志记录设置、MS Enterprise 库设置等。


App.config 在新的测试框架中不起作用

MS的新测试框架应该很棒,但对我来说根本不是那么好。 当新框架不再使用配置文件时,我该如何在配置文件中设置一些基本配置?

我们遇到了混合模式 dll 的问题,并找到了修复方法:添加

<startup useLegacyV2RuntimeActivationPolicy="true"> 

到应用程序配置。但这对于我们的单元测试项目不起作用。因为配置文件已经不存在了。网上搜索了一下,找到了解决办法

'Visual Studio .Net 4.5 测试项目中的 .Net 2.0 混合模式程序集存在问题 http://www.diaryofaninja.com/blog/2012/09/13/net-20-mixed-mode-assemblies-in-visual-studio-net-45-test-projects#.UFFl43wdOYw.dotnetkicks'

这意味着在程序文件目录中编辑 Visual Studio 11 本身的文件,我认为这不是一个很好的解决方案......

一些基本的应用程序设置怎么样?我该如何设置这个?


不要使用 .testSettings 文件

MS 也不建议使用旧的 .testsettings 文件,因为这样会使用旧的测试框架。如果我使用 .testsettings 文件,我无法在 tfs2012 构建服务上设置代码覆盖率。

另一个问题是我们的代码需要 dll (system.data.sqlite.dll),但只有在运行时单元测试代码才需要这个 dll。所以不需要参考。我们通过使用 testsettings 文件上的“部署”选项卡修复了此问题。但在新框架中,您不应该使用 testsettings 文件。如果您需要文件,您可以使用 [deploymentitem] 属性。但是,deploymentitem 属性只能在 [testmethod] 上使用,而不能在 [testinitialize] 或 [ assemblyinitialize] 方法上使用。但是我们的代码需要[testinitialize]方法中的dll。所以没有办法让dll就位。

仅仅在[Assemblyinitialize](或testinitialize)方法中用File.Copy复制它是行不通的。

将 dll 作为文件添加到项目中,并将“复制到输出目录”设置为“始终复制”,如“使用 .runsettings 文件配置单元测试 http://msdn.microsoft.com/en-us/library/ee256991.aspx' 也根本不起作用。

对此的(确实不是很好)解决方案是添加 dll 作为引用,然后实例化一个类并且不对其执行任何操作。这样就需要 dll,否则它不会构建,因此 dll 会将自身部署到正确的目录。


如何解决我的问题???- 我想在单元测试中使用配置文件。 - 我想部署“程序集初始化”和/或“类初始化”方法中所需的一些文件。 - 我希望在我的 TFS2012 nightly build 上启用代码覆盖率。


a) App.config 在新的测试框架中不起作用

这应该仍然有效。我认为在这种情况下缺少的是这个 .config 文件没有与您的测试 dll 一起复制。您能否将其设置为部署项并重试?

b) 不要使用 .testSettings 文件

  • .testsettings 和代码覆盖率。 VS 2012 版本中仍然支持使用 .testsettings 文件设置代码覆盖率。您只需选择 mstest 2010 测试运行程序并在构建定义中指定 .testsettings 文件

如果 .testsettings 文件中除了代码覆盖率设置之外没有任何内容,那么您可以轻松迁移到 2012 测试运行程序并在下拉项中选择“启用代码覆盖率”

  • 复制测试初始化​​所需的文件 您可以通过 .testsettings 文件执行此操作,也可以执行构建后文件复制任务。这样做非常简单,并且不会对其他任何事情产生影响。使用“复制到输出目录=始终复制”确实有效。请尝试使用示例解决方案,看看您是否可以缩小范围,了解为什么这不适用于您的设置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2012 & TFS2012 单元测试主要问题 的相关文章

随机推荐

  • 登录 python + mod_wsgi 应用程序

    我在 apache 服务器上部署了一个 python Flask 应用程序 这是我的abc conf file WSGIDaemonProcess voting app threads 5 WSGIScriptAlias election
  • 为什么 new()/delete() 比 malloc()/free() 慢?

    为什么new delete 比malloc free 慢 EDIT 感谢到目前为止的回答 如果您有new 和delete 的标准C 实现规范 请指出 谢谢 看一下这段C代码 struct data pd malloc sizeof stru
  • PostgreSQL 9.3 触发器函数插入带有参数化名称的表

    我正在尝试在 Postgres 中动态分区日志条目 我有 53 个子表 1 个代表每周的日志条目 并且希望使用触发器将 INSERT 路由到子表 我运行该函数INSERT INTO log5 VALUES NEW 并且它有效 我用以下命令运
  • 在 IISNode 上运行的 Azure Node.js 应用程序中未定义端口

    我有一个使用 IISNode 运行 Node js 应用程序的 Azure 应用服务 问题是process env PORT未定义 我读过 IISNode 使用一个叫做命名管道并且端口信息可能不容易读取 但就我而言 我只是未定义 我尝试部署
  • HK2 MethodInterceptor 与 Jersey 资源

    如何设置aopMethodInterceptor使用泽西岛资源 这是我尝试过的 如下this https hk2 java net 2 2 0 aop example html文档 第 1 步 拦截服务 public class MyInt
  • Linux 的 gcc __attribute__((selectany)) 替代方案?

    我想知道是否有替代方案 attribute selectany 在Linux中 我想定义这样的东西 char a qwe zxc 并将其包含在许多链接在一起的 c 文件中 因此链接器将看到 a 的多个定义 因此不会链接 我读过这个属性 se
  • 更改 WooCommerce 购物车和结帐页面中的“运输”文本:[重复]

    这个问题在这里已经有答案了 我正在将 WooCommerce 与 Storefront 主题一起使用 并且我正在尝试更改这个词 船运 在带有总计的购物篮页面上 我在这里找到了一些建议 https kriesi at support topi
  • iOS后台Location不发送http请求

    我的应用程序需要在后台跟踪用户位置 但无法发送 获取 请求 当应用程序到达前台时 http 请求会立即发送 我正在使用 RestKit 来处理所有网络请求 并且遵循本教程 http www mindsizzlers com 2011 07
  • Google Cloud Platform:将上传的 MP4 文件转换为 HLS 文件

    我正在构建一个平台 允许用户将一些视频文件 20 40 秒 从手机上传到服务器 所有这些上传目前都运行良好 文件通过nodejs云功能存储在谷歌存储桶中 现在我想创建一个 gcp 转码器作业 它将上传的 mp4 视频文件转换为 hls 视频
  • 在 ASP.NET MVC3 中,应该如何呈现由多个模型支持的多个 PartialView?

    在 MVC3 Razor 中 如何创建具有多个表单的页面 以便每个表单都是使用自己的模型渲染的部分视图 我们一直在尝试各种形式的调用 Html RenderPartial 传入部分视图名称以及我们通过 ViewBag 访问的模型实例 但我们
  • VBA添加图表标题

    我只想使用 vba 将图表标题添加到我的图表中 我实际上想对每张纸中的每个图表递归地执行此操作 但我什至无法让 1 个图表工作 这是我的代码 Dim chnam chnam Left ActiveSheet Name Len ActiveS
  • 多维数组上的数组合并

    要么我是瞎子 要么我在任何地方都找不到这个问题 昨天我在合并数组时遇到了问题 我可以在 SO 的帮助下解决这个问题 今天 我再次遇到了合并数组的问题 但这一次是多维数组 我有一个数组 usergroup groups 和一个数组 userg
  • 在特定时间启动应用程序

    我想知道是否有可能 以及如何 在特定时间启动我的应用程序 就像在特定时间响起的闹钟一样 假设我希望我的应用程序在早上 8 点启动 这可行吗 您可以使用 AlarmManager 来完成此操作 这是一个简短的示例 首先你需要设置闹钟 Alar
  • SSL 到底如何工作?

    SSL 是如何工作的 证书安装在客户端 或浏览器 和服务器 或Web服务器 的哪里 当您在浏览器中输入 URL 并从服务器获取页面时 信任 加密 身份验证过程如何启动 HTTPS协议如何识别证书 当证书负责所有信任 加密 身份验证工作时 为
  • 如何在打字稿订阅功能之外获取价值

    我对某些服务有以下订阅功能 this sub this route params subscribe params gt this id params id this someService thisById this id subscri
  • * 对于结构体来说是非法的吗?

    我尝试编译以下代码 但编译器不会执行此操作 因为 对于结构来说是非法的 这是真的吗 struct String int length int capacity unsigned check char ptr 0 String void ma
  • 抓取多个帐户,即多次登录

    我可以成功抓取单个帐户的数据 我想在一个网站上抓取多个帐户 这意味着多次登录 如何管理登录 注销 您可以在每个帐户会话中使用多个 cookiejar 并行抓取多个帐户 请参阅 cookiejar 请求元密钥http doc scrapy o
  • 计算两个描述符之间的距离

    我正在尝试计算已计算的两个描述符之间的距离 欧几里得或汉明 问题是我不想使用匹配器 我只想计算两个描述符之间的距离 我正在使用 OpenCV 2 4 9 并且我的描述符存储在 Mat 类型中 Mat descriptors1 Mat des
  • 如何创建启动活动,通过按钮调用第二个活动,简单的数据表单 5 个字段和 2 个按钮

    Android 新手需要一个可靠构建的帮助 我可以参考并研究未来的项目 第一个活动是带有按钮的背景图像 单击时会出现 您将看到第二个活动 该活动是一个包含 5 个数据字段和 2 个按钮的表单 一个按钮调用在应用程序内拍照的意图 另一个按钮将
  • VS2012 & TFS2012 单元测试主要问题

    我们使用 VS2012 和 TFS2012 并为我们的代码编写单元测试 我们想要报告代码覆盖率 并在单元测试中使用 config 文件来测试应用程序设置 以及一些其他日志记录设置 MS Enterprise 库设置等 App config