Windows Phone 单元测试现状

2024-01-07

我一直在将我的 Google Fu 推向极限,试图找到最推荐/稳定的设置来为 Windows Phone 应用程序执行 TDD + CI。成功做到这一点的人能给我指出正确的方向吗?

这是我想要做的(如果可能的话):

  • 为不需要电话功能的视图模型和应用程序服务编写单元测试
  • 通过 Resharper 或 TD.NET 直接在 Visual Studio 中执行测试
  • 使用 XML 输出从命令行执行单元测试,无需启动模拟器
  • 最好能够适应 SDK 更新(就第三方库而言)

由于我想将这个问题作为其他人寻找相同问题的资源,因此我希望避免以下问题的答案:

  • 不完整或废弃项目的开源端口
  • 仅作为某人博客上的附件提供的项目

我还想进行完整的 BDD 风格的验收测试,但是这完全是另一个问题 https://stackoverflow.com/questions/5990067/how-can-i-obtain-an-automationelement-reference-to-an-application-running-in-the.


我将此答案添加为社区 Wiki,以便其他人可以对其进行修改以保持最新。

单元测试

意图:通常从 IDE 和持续集成服务器运行隔离(无电话功能)、快速执行的测试,而不需要模拟器(例如 TDD 视图模型)

我在许多演示中看到推荐的方法涉及引用 .NET 4 项目中的源文件并针对这些文件运行测试(引用程序集的桌面等效项)。如果您的代码不使用任何与桌面 BCL 不同的 APIand您可以处理使参考项目保持最新(不会自动添加新文件),这应该足够了。

否则,您可以按照以下步骤在桌面 CLR 中执行引用 WP7 程序集的代码:

  1. 添加测试 Silverlight 4 类库(不是 Silverlight适用于 Windows 手机项目)到您的解决方案
  2. 在类库中,设置Copy Local所有框架参考除了 mscorlib(基本上是 System.* 和 Microsoft.*)true
  3. 添加此测试库的引用到NUnit.Silverlight.Framework.dll and NUnit.Silverlight.Compatibility.dll来自NUnit-Silverlight 项目 http://code.google.com/p/nunit-silverlight/
  4. 将测试库中的引用添加到您的主 Windows Phone 项目中,忽略版本警告。
  5. 使用 ReSharper(已测试)或 TestDriven.NET 在 IDE 中运行测试
  6. 使用标准 .NET 2.0 从命令行运行测试nunit-console.exe来自最新 NUnit 版本 http://nunit.org/index.php?p=download,传入/framework=v4.0.

(上面的许多解决方法都是必需的,因为 WP7 使用 SL3。一旦 Mango 与 SL4 运行时一起发布,它应该是一个更干净的设置)

集成测试

意图:在模拟器上按需和 CI 服务器上运行与代码外部资源(例如电话功能和 Web 服务)交互的长时间运行的测试

UPDATEWindows Phone 8 应用程序单元测试将在 Visual Studio 2012 Update 2 中得到正式支持 http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/31/windows-phone-unit-tests-in-visual-studio-2012-update-2.aspx,包括 VS 集成和命令行支持。这些测试在模拟器中运行,因此我将其包含在集成测试下。

Silverlight 测试框架的 WP7 端口当前不支持此功能(并且只能从博客下载)。

与此同时,我创建了一个代码复合体项目 http://wp7ci.codeplex.com/添加一个 MSBuild 任务,该任务启动模拟器并将结果整理到 XML 文件中。最简单的安装方法是添加wp7-ci NuGet包 http://nuget.org/List/Packages/WP7-CI.

注意:在 Windows Server 上安装 WP7 SDK需要修改安装程序配置 http://blogs.msdn.com/b/astebner/archive/2010/05/02/10005980.aspx并且不受支持,但运行良好。

验收/系统测试

目的:运行端到端自动化测试,与模拟器上的手机 UI 进行交互(按需或在 CI 服务器上)

Expensify's(对 SEO 来说名字不好)Windows Phone 测试框架 https://github.com/Expensify/WindowsPhoneTestFramework支持使用 SpecFlow 从主机 PC 编写 UI 自动化测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows Phone 单元测试现状 的相关文章

  • 在 TFS 下的 CI 队列上构建时包未恢复(VS Online VS2015)

    我问过一个关于构建错误的问题 https stackoverflow com questions 34808954 build errors of missing packages in visual studio online并继续由我绝
  • 自动部署资源

    我足够了解我们需要通过单个用户操作来部署我们的应用程序 但是 我don t know 在 NET 商店中可以使用哪些好工具 您如何管理每个环境的配置更改 有人可以给我指出一些用于持续集成的好资源吗 我希望看到一些理论以及逐步的实践指南 Ed
  • 如何在 XAML 中使用其他项目的图像?

    我正在构建一个包含多个项目的解决方案 Windows Phone 应用程序 其中一个项目是用于 品牌 的 它包含一些特定的代码和图像 其想法是该项目可以更换为不同的品牌 我的应用程序页面位于主项目中 我想在主应用程序的 UI 中显示存储在第
  • Windows Phone 7 本机代码支持

    2个问题 有人可以告诉我非托管 c 代码是否会 Phone 7 操作系统的未来版本是否会支持所有开发人员 MS 不这样做的原因是什么 支持非托管 C 代码 这个答案纯粹是推测性的 但我觉得大多数回答这个问题的其他人都没有抓住要点 让我们暂时
  • 通过 TFS 构建服务执行时 MSBuild 找不到引用

    我有一个参考 Telerik 程序集的解决方案 引用的版本已安装在构建服务器上 问题是 持续集成构建总是成功的 直到我升级解决方案和构建服务器上的 Telerik 程序集 现在构建无法提供经典的 无法解析此引用 我检查了我的解决方案 一切都
  • TFS 门禁办理登机手续的缺点

    我一直使用 TFS 中的持续集成 CI 构建 然而 在我的上一个项目中 我们开始使用门控签入触发器 使用门禁办理登机手续有什么缺点吗 因为如果它阻止团队检查损坏的代码 那么 CI 触发器的目的是什么 门控签入是持续集成构建的一种形式 在TF
  • 如何将 FTP 网站部署添加到 VS2015/TFS2013 构建过程中

    我已经成功构建运行 现在我想让构建定义将站点发布到我的暂存位置 我尝试使用在 Visual Studio 中正常运行的发布配置文件 但这似乎不适用于 Visual Studio 和 TFS 的这种独特组合 这些是我的 MSBuild 参数
  • Windows Phone 的 JSON 反序列化

    我正在尝试反序列化以下 JSON 但我真的不知道如何使用 JSON net 来完成这项工作 我正在使用 C 和 JSON Net 库 我的 JSON 如下 found 3 bounds 43 54919 172 62148 43 54487
  • TDD研究

    我知道北卡罗来纳州立大学对 TDD 做了一些研究 他们发表了一篇论文 名为 工业测试驱动开发的初步调查 http collaboration csc ncsu edu laurie Papers TDDpaperv8 pdf NCSU 的其
  • NUnit 测试运行顺序

    默认情况下 nunit 测试按字母顺序运行 有谁知道有什么方法可以设置执行顺序吗 是否存在这样的属性 我只是想指出 虽然大多数受访者认为这些是单元测试 但问题并没有具体说明它们是 nUnit 是一个很棒的工具 可用于各种测试情况 我可以看到
  • 已安装 cypress npm 软件包,但缺少 Cypress 二进制文件

    大家好 我是 azure devops CI 的新手 我正在尝试通过在作业之间缓存 node modules 来减少管道构建时间 但我遇到了无法解决的错误 我正在使用 cypress 进行测试 这是我的天蓝色管道 Node js Build
  • 不返回值的方法的起订量调用库(void 方法)

    我正在尝试模拟正在测试的类 以便在测试它们时可以对各个方法进行调用 这将允许我仅将方法设置测试为调用库 并且从测试方法中调用的所有其他方法 同一类 都将被模拟 但是 对于不返回值的方法 我无法执行此操作 对于不返回值的方法 智能感知只是不显
  • ListBox 内的 WP7 TextBlock 不换行文本

    我有一个ListBox其中有StackPanels 拿着一个TextBlock and an Image水平方向 然后是ContentPresenter XAML 如下所示
  • 使用 sinon 对 ES6 原型方法进行存根

    我在使用 Sinon 存根超类的原型方法时遇到问题 在下面的示例中 我将对超类方法 GetMyDetails 的调用进行存根处理 如下所示 我确信有更好的方法 actor sinon stub student proto proto Get
  • ATDD 与 BDD 以及框架的正确使用

    我刚刚开始了解 BDD 的概念 并且已经听了 Scott Bellware 与 Herding Code 人员的演讲 我一直在尝试使用 SpecFlow 并且非常喜欢它 我了解博客文章中描述的 ATDD 和 TDD 之间的区别BDD 工具分
  • Seam 和 Mock 有什么区别?

    自从我使用 java 遗留代码以来已经有几个月了 这是我正在处理的一些事情 0 测试覆盖率 巨大的函数有时我什至看到有的代码超过300行 许多私有方法 有时还有静态方法 高度紧密耦合的代码 一开始我很困惑 我发现在遗留系统中使用TDD很难
  • MsDeploy 虚拟目录在部署时转换为虚拟应用程序

    为了使我的 CMS 正常工作 需要将其部署到 www 根目录下的虚拟目录 以便它可以访问 通过反射 要管理的网站 注意 CMS N2CMS 当使用 Visual Studio 发布到网络 时 一切都很好 但是 当我通过 msbuild 命令
  • 滚动 X 轴绘图区域 - Silverlight 柱系列

    我有一个工作正常的柱形系列图表 我有一个需要添加的功能 我希望水平滚动能够启用到 x 轴的绘图区域 这是屏幕截图 如果您看到屏幕截图 我有 6 个项目 并且由于项目数量较多 条形图非常细 所以假设如果我有 20 个项目 那么条形图将根本不可
  • 筛选 NUnit MSBuild 任务的类别?

    我正在设置一个 MSBuild 项目来运行一些 NUnit 测试 使用MSBuild 社区任务项目 http msbuildtasks tigris org 通过这些设置 我将能够运行 NUnit 测试
  • 覆盖 Windows Phone 7 中的主题

    有没有办法让控件只使用深色或浅色主题 我正在开发一个大部分是深色的应用程序 我们有一些深色的自定义背景 所有文本块都已处理 它们始终是白色的 但是按钮 文本框 复选框 单选按钮 当手机主题设置为浅色时 所有这些都会变成黑色 并且几乎看不见

随机推荐

  • android在对话框中加载webview [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在我的 webview 中打开 twitter auth 而不是在浏览器中打开 有什么好的教程如何在
  • 用 Beautiful Soup 解析 XML

    编辑 已解决 我想我应该在底部添加我的答案 注意 所需的输出是一堆像 US D0591026 我的 XML 数据如下所示
  • 比较两个 C 风格字符串的正确函数是什么?

    所以我陷入了两难的境地 我需要比较两个 C 风格的字符串 并搜索了最合适的函数 memcmp Compare two blocks of memory function strcmp Compare two strings function
  • 使用免费的第三方 dll 将 word 转换为 pdf

    我想将word文档转换为pdf 我找到了很多使用 Office dll 的解决方案 但我想要一个使用免费第三方dll的解决方案 因为在office dll中必须安装office 所以我的服务器上没有安装office 有没有免费的第三方dll
  • 将组合变音符号转换为简单 utf

    由于某些编码问题 我在将字符串插入数据库时 遇到问题 字符串源是外部 rss 提要 在网络浏览器中看起来没问题 即使在调试器中 文本也看起来没问题 如果我将strong复制到记事本中 结果也可以 但在记事本 中可以看到字符串正在使用组合字符
  • 如何从 Android 调用 PHP 函数?

    我想调用服务器上的特定 php 函数并发送一些参数 到目前为止 我实现了可以使用 HttpClient 打开 php 文件并执行数据传输到 Json 并在我的应用程序中显示 那么 现在我希望能够调用特定函数并向其发送参数 我该怎么做 抱歉
  • Oracle 和分页

    在 MySql 中 分页的概念可以通过使用单个 SQL 语句轻松实现LIMIT子句类似于以下内容 SELECT country id country name FROM country c ORDER BY country id DESC
  • 无法使用 MongoEngine Pymongo 和 Django 返回 JSON 对象?

    所以我试图返回一个项目的 JSON 对象 我花了几个小时试图让 Django 返回 JSON 这是我们一直在研究的观点 def json request first name user User objects all user User
  • ASP.NET MVC AJAX 与 HTML.ValidationMessageFor

    我习惯使用 ASP NET Webforms 通过 UpdatePanels 执行 AJAX 的简单方法 我知道这个过程对于 MVC 来说更加手工 在特定情况下 我使用数据注释来验证某些表单输入 我使用 HTML ValidationMes
  • 如何全局更改Swing JTextFields的ActionMap?

    我想通过用我的自定义实现替换一些操作来更改整个应用程序中 Swing JTextFields 的 ActionMap 关于原因的解释可以参考以下帖子 如何使 JTextComponent 的插入符跳过选定的文本 https stackove
  • 如何在悬停时反转转换?

    我可以通过 CSS 反转悬停时的过渡动画吗 当我将鼠标悬停在 菜单 文本上时 我需要滑动到右侧蓝线 并在 400 毫秒延迟后从左侧灰线滑动 是否可以 menu display inline block position relative f
  • 是否有像 phpMyAdmin 这样的工具可以配置为仅访问单个数据库? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有像 phpMyAdmin 这样的工具可以配置为仅访问服务器中的单个 MySQL 数据库 我无法使
  • Bootstrap Dropdown 在 React 中不起作用

    我从引导下拉列表中添加了一个用于 React 的下拉按钮 但它不起作用并显示为普通按钮 你能给我一个解决方案吗 div div
  • Ajax.BeginForm 指定“GET”类型发帖

    我的看法如下 Scripts jquery unobtrusive ajax js type text javascript gt Scripts jquery validate js type text javascript gt Scr
  • 我应该使用 DTO 作为 MVVM 中的数据模型吗?

    我目前正在研究我第一次真正尝试使用 MVVM 并且一直在阅读各种关于如何最好地实现它的文章 我当前的想法是有效地使用我的数据模型作为数据传输对象 使它们可序列化并让它们同时存在于客户端和服务器端 这似乎是一个合乎逻辑的步骤 因为这两种对象类
  • Rails 3.1:无法在添加它的同一迁移中写入列

    我有一个可以正常运行的 add column 迁移 然而 在运行它并启动控制台后 我会发现first name和last name列完全为空 我尝试使用save 相反 它具有相同的效果 没有报告错误 这是原文 class UserAddFi
  • 如何在 Sublime Text 3 中运行 python 代码?

    所以我尝试从 Sublime Text 3 运行 python 代码 但我不知道如何运行 即使只是来自控制台 那也没关系 有人知道怎么办吗 工具 gt 构建系统 gt Python 或 Ctrl B
  • 使用实现多个接口预泛型的参数

    假设我有这些接口 public interface I1 void foo public interface I2 void bar 和课程 public class A extends AParent implements I1 I2 c
  • 程序“main.exe”无法运行:指定的可执行文件不是此操作系统平台的有效应用程序

    我正在设置 Visual Studio Code 当我尝试运行 main cpp 执行时为 main exe 时 它显示了上述错误 根据我在网上读到的有关该问题的信息 我认为这是因为 c cpp properties json 文件中写入错
  • Windows Phone 单元测试现状

    我一直在将我的 Google Fu 推向极限 试图找到最推荐 稳定的设置来为 Windows Phone 应用程序执行 TDD CI 成功做到这一点的人能给我指出正确的方向吗 这是我想要做的 如果可能的话 为不需要电话功能的视图模型和应用程