Xamarin - 跨平台单元测试

2023-12-26

我正在整合我的团队开发环境,为我们的第一个大型 Xamarin.Forms 项目做好准备,从敏捷的角度涉及整个团队。

在继续之前我需要验证一个假设......单元测试。

我们计划使用适用于 Android 和 Windows Phone 的 TFS 以及 OSX 上的 Jenkins 来实现构建基础架构。当我们创建单元测试项目时,有什么需要特别考虑的吗?

使用 NUnit

我可以只创建包含测试的类库吗? 他们需要是 PCL 吗? 这些可以在 OSX CI 盒子上使用吗?

任何澄清将不胜感激。我似乎找不到关于这个主题的权威指南/入门书。

提前致谢。


我们使用类似的设置成功运行了一个产品(除了我们在 OSX 下构建所有内容)。

如果您想要测试的只是您的逻辑(毕竟,这不就是它的全部内容吗?),那么您不需要将测试程序集设为 PCL。这很好,因为您可以让测试程序集以完整的 .NET Framework 为目标,并且可以访问模拟框架(例如我个人最喜欢的 Moq)。选择 NUnit(或 XUnit)很重要,因为这允许您在 OSX 下运行它们。

如果我可以提出建议:您还可以使用 SpecFlow 等框架创建集成测试:在 Visual Studio 中工作(良好的设计界面,可让您在调试器中单步执行功能文件!),并且测试在OSX 因为它们实际上只是 N/XUnit 类。将其与 Xamarin 的新 UI.Test 框架结合起来,您就可以用煤气做饭了。

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

Xamarin - 跨平台单元测试 的相关文章

  • Device.BeginInvokeOnMainThread 的用途是什么?

    我希望有人向我解释什么是 Device BeginInvokeOnMainThread 以及它的用途是什么 还有一些使用案例的示例 只是添加一个例子 假设你有一个异步方法DoAnyWorkAsync如果你这样称呼它 仅作为示例 DoAnyW
  • 需要帮助理解这段代码

    我正在尝试学习单元测试 我正在尝试对我在 asp net mvc 1 0 中制作的一些会员资格内容进行单元测试 我一直在关注一本关于 MVC 的书 我对一些东西感到困惑 希望有人能为我解答 我的框架使用 Nunit 和 Moq 问题一 pu
  • NameResolutionFailure 与 ConnectFailure 问题

    这是一个相当奇怪的问题 但仍然是一个非常糟糕的问题 当用户在没有互联网的情况下进入我们的应用程序时 我们会返回一个NameResolutionFailure作为尝试通过以下方式进行 API 调用的错误消息HttpClient 好吧 没关系
  • 在 Xamarin 中读取 iOS 的相机权限

    我有一个用 Xamarin 开发的 iOS 应用程序 当应用程序没有访问麦克风的权限时 如果用户尝试从应用程序访问麦克风 我会使用以下命令检查设置AVAudioSession SharedInstance RequestRecordPerm
  • Jenkins:有什么方法可以清理 Jenkins 工作区吗?

    如何清理 Jenkins 中的工作区 我在用AccuRev作为版本控制工具 我创建freestyle詹金斯的项目 有一种方法可以清理 Jenkins 中的工作区 您可以在构建之前或构建之后清理工作区 首先 安装工作区清理插件 https w
  • 我如何才能获得 Jenkins 的工作范围凭证?

    首先抱歉 如果这个问题及其解决方案存在于某处 但我找不到它 我希望能够在工作中创建凭证 并且只能在该工作中使用 这是一种工作范围凭证 目前 凭证插件仅建议全局和系统范围 因此凭证可用于所有作业 凭据绑定插件似乎也没有解决我的问题 但公平地说
  • 从 Jenkinsfile 设置管道名称和描述

    我正在尝试将 jenkins 管道的 poc 作为代码 我正在使用 Github 组织文件夹插件来扫描 Github 组织并为每个分支创建作业 有没有办法显式定义从 Jenkinsfile 获取的管道作业的名称 我还想添加一些职位描述 你需
  • 在全球范围内压制 StyleCop 警告

    如何在解决方案中全局抑制 StyleCop 警告 该解决方案是使用 Jenkins 持续构建和集成工具 持续构建的 并且应用了所有 StyleCop 规则 该解决方案使用 TAB 字符而不是 4 个空格 因为这是我的开发团队采用的标准 因此
  • Jenkins 和 Gitlab 不获取代码

    当我设置自己的项目时 我遇到了问题 我开始配置我的 Jenkins 作业 我这样做了 在 Jenkins 上为 gitlab 用户帐户创建凭证 在 gitlab 上创建访问令牌并在 Jenkins 中使用此令牌来启用它 and this i
  • 在构建服务器上运行单元测试时出现 BadImageFormatException

    我在一个具有 AnyCPU 架构的项目中进行了一套 NUnit 测试 其中一些测试使用 x86 32 位 程序集中的类型 当我在本地运行测试 通过 ReSharper 时 它们都通过了 然而 当它们在 Jenkins 上执行时使用nunit
  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 通过 SVN 从 Jenkins 更新工作区时出现间歇性“SVNException:svn:E175002:连接重置”

    我有 Jenkins 2 138 3 在虚拟机上运行 在同一网络上的另一台 PC 上 我有一个 Visual SVN 服务器 3 9 2 结帐间歇性地 可能是 25 的时间 失败 并出现以下错误 ERROR Failed to check
  • 最新 Xamarin Visual Studio 2017 中缺少模板

    我想开始跨移动应用程序开发 因为我听说如果您擅长 C Xamarin 是一个很好的框架 因此 我下载了安装了 Xamarin 模块的最新 Visual Studio 2017 为了学习 我获得了 Xamarin 的 Udemy 课程和它是最
  • 如何在声明性 Jenkins 管道的阶段之间传递变量?

    如何在声明性管道的阶段之间传递变量 在脚本化管道中 我收集的过程是写入临时文件 然后将该文件读入变量 如何在声明式管道中执行此操作 例如 我想根据 shell 操作创建的变量触发不同作业的构建 stage stage 1 steps sh
  • 如何在android上使用xamarin表单执行脚本

    我正在尝试在 Android Mono 上使用 Xamarin Forms 运行 C 脚本 当我运行脚本时 我收到错误 System IO FileNotFoundException 找不到文件 mscorlib dll 这是我试图执行的代
  • 无法在调试 Xamarin Android 和 iOS 的设备上部署

    我使用的是最新的 Visual Studio 15 6 3 无法再通过调试在设备上部署 如果我在没有调试的情况下运行它就会部署 我该如何修复它 真烦人 iOS Android System Net Mqtt Sdk MqttClientIm
  • Selenium - 模式对话框存在 - 如何接受信息?

    我有以下问题 在页面上提交一些日期后 我有一个如图所示的模式对话框 我想单击 ENTER 来浏览该模式 但它不起作用 我有以下代码 driver FindElement By CssSelector input submit Click A
  • 带 Prism 的表单:应用程序窗口预计有一个根 VC

    我刚刚在我的新应用程序中实现了 Prism 库 并且正在使用 NavigationService 它在 Android 上运行良好 但是当我尝试在联网的 Mac 上调试我的 Xamarin Forms iOS 应用程序时 我的 Main 方
  • 如何在 xamarin.ios 中全局隐藏导航栏后退按钮标题

    我在 AppDelegate 中使用了这段代码 UIBarButtonItem Appearance SetBackButtonTitlePositionAdjustment new UIOffset 100 60 UIBarMetrics

随机推荐

  • 哪些工具执行 IL 的编译后修改?

    最近提到 PostSharp 让我想起了这一点 去年我工作的时候 我们正在考虑使用 PostSharp 将检测注入到我们的代码中 这是在 Team Foundation Server 团队构建 持续集成环境中 考虑到这一点 我对 PostS
  • 帮助理解 javascript 全局消除技术

    来自 DailyJS 让我们构建一个 JavaScript 框架 http dailyjs com 2010 02 25 djscript part 1 structure 我不太确定以下代码 显然用作全局抑制技术 到目前为止 我的理解对
  • 使用移动设备的触摸事件模拟拖放事件

    前段时间 我在移动设备上的网络浏览器中进行拖放操作时遇到了困难 默认的 JavaScript 事件在移动设备上不起作用 您只能使用触摸事件 就我而言 我需要通过拖放来交换两个图像以及 ID 这里有一个例子 div display inlin
  • 从另一个 llvm::Module 获取函数声明

    在我的应用程序中 我有 2 个 LLVM 模块 运行时模块 其中包含void foo int a 函数定义 和可执行文件 我使用 LLVM C API 创建 在我的可执行模块中我创建int main int argc char argv 并
  • GNU make 不删除中间文件

    我的makefile如下 The names of targets that can be built Used in the list of valid targets when no target is specified and wh
  • 自动弹出标题,无延迟

    是否有机会执行 js onclick 函数 如果有人自动单击该图标 则会显示标题文本 或者当有人将鼠标移到其上时 标题将立即显示 现在元素的标题会在 1 秒后出现 你可以试试这个 纯css 没有js HTML div class hover
  • 什么是可标记元素?

    我已经阅读无障碍 http www w3 org TR aria in html fifth rule of aria use我偶然发现了一个我找不到准确信息的概念 HTML 可标记元素 我知道可标记元素背后的概念是可以由
  • 检查文件是否包含光栅或矢量元素? (pdf、eps、ai)

    有没有办法检查文件中是否包含光栅元素 我有兴趣对 pdf eps 和 ai 格式执行此操作 如果文件只是矢量 我将其转换为 svg 如果它有一些光栅元素 我必须将其转换为 png 文件 我正在使用 PHP 但我也可以使用任何命令行工具 例如
  • dict.viewkeys() 返回的数据类型是什么? [ 蟒蛇 2.7 ]

    我在学习dict viewkeys 今天 我发现我的python调用了它dict keys目的 我可以将其视为可迭代对象 但它不是生成器 因为我可以多次迭代它 以我有限的知识 我只知道String int float list dict t
  • html5画布kineticjs事件

    我似乎在使用事件获取时遇到问题动力学JS http kineticjs com以 1 或更小的行程在 Kinetic Line 上开火 我认为将所有行添加到一个组 然后将事件附加到一个组就足够了 但它不起作用 我已经简化了我想要完成的代码以
  • 重定向回同一页面时 CakePHP 缓存问题

    我正在使用 CakePHP 2 6 当我重定向回发出请求的同一视图时 我遇到了问题 该视图似乎已被缓存 因此在请求期间所做的任何更改都不会显示 直到再次刷新页面 这意味着 用户无法看到刚刚所做的更改 Flash 消息显示在下列的视图 这很糟
  • Vuetify 外部分页不显示页码

    我有一个 v data table 我正在尝试为其添加分页 我已按照示例文档进行操作here https vuetifyjs com en components data tables example paginate我看不出我做错了什么
  • 使用布尔运算符在 Z3 中定义约束

    比方说 我想使用 Z3 约束将字符串的每个字符限制为字符集 a zA Z0 9 我可以使用布尔运算符来指定吗 举个例子 input BitVec input s i 8 for i in range 10 for i in range 10
  • Shiny:如何在禁用操作按钮的情况下启动应用程序?

    我需要启动一个禁用 button2 的应用程序 仅应在按下 button1 后启用 我怎样才能做到这一点 我正在尝试使用启用 禁用shinyjs包裹 我可以在按 button1 后启用 button2 但是如何在禁用 button2 的情况
  • 代码更改后如何在没有 mvn clean install 的情况下构建项目?

    我在 eclipse 中有一个项目 一个带有 appengine sdk 和 maven 作为我的构建器的 java 应用程序 在我启动全新安装之前 class 文件不会刷新 因此我在代码中所做的每项更改都必须运行 mvn 干净安装 mvn
  • Maven 程序集插件:包含文件而不获取其路径文件夹

    我使用 maven assemble plugin 将依赖项 ZIP 也使用程序集插件生成 中的文件包含到最终版本 ZIP 文件中 问题是我想从依赖项中选择要获取的文件 但不复制这些文件所在的文件夹路径 只是文件 例如
  • 使用 Google Maps API 检索“商家”?

    这是一个例子 它附加了一些元素 例如 Reviews来自各个网站 qype viewlondon 等 Details由各个网站提供 Photos and other content 我不知道如何继续检索此类业务并关联我的网站上生成的任何项目
  • 使用AlwaysUseFullPath 属性了解使用DispatcherServlet 的URL 映射

    我尝试将 DispatcherServlet 中的 URL 配置为映射到不带扩展名的 URL 我终于明白了这一点 但我不明白为什么 URL 会这样工作 假设上下文为 foobar 如果 DispatcherServlet 的 url 模式为
  • GetValue、GetConstantValue 和 GetRawConstantValue 之间的区别

    两者有什么区别GetValue GetConstantValue and GetRawConstantValue上的方法PropertyInfo班级 不幸的是 MSDN 文档对这个主题不是很清楚 Both GetConstantValue
  • Xamarin - 跨平台单元测试

    我正在整合我的团队开发环境 为我们的第一个大型 Xamarin Forms 项目做好准备 从敏捷的角度涉及整个团队 在继续之前我需要验证一个假设 单元测试 我们计划使用适用于 Android 和 Windows Phone 的 TFS 以及