将 Xamarin.UITest 与 MvvmCross 绑定一起使用
Posted
技术标签:
【中文标题】将 Xamarin.UITest 与 MvvmCross 绑定一起使用【英文标题】:Using Xamarin.UITest with MvvmCross Binding 【发布时间】:2015-05-15 16:52:03 【问题描述】:我正在使用 Xamarin.UITest 框架来断言某个按钮是否被禁用或启用。 不幸的是,如果按钮的“启用”属性通过绑定设置通过 MVX(绑定正在工作 - 按钮确实被禁用),那么这个不起作用。 p>
带有两个按钮的示例 axml:
<xxx.Widgets.Button
android:id="@+id/btnSave"
android:layout_
android:layout_
android:text="Save"
style="@style/DefaultButton"
local:MvxBind="Click SaveAndContinueCommand; Enabled SaveButtonActive" />
<xxx.Widgets.Button
android:id="@+id/btnTest"
android:layout_
android:layout_
android:text="Test"
style="@style/DefaultButton"
android:enabled="false" />
使用 Xamarin.UITest 查询:
var button = App.Query(v => v.Button("Save")).FirstOrDefault();
Assert.IsFalse(button.Enabled); // -> Button is always enabled
var testButton = App.Query(v => v.Button("Test")).FirstOrDefault();
Assert.IsFalse(button.Enabled); // -> Button is disabled. Correct!
我需要注意不同的事情吗? 有没有人体验过 MVX 和 Xamarin.UITest 的组合?
【问题讨论】:
【参考方案1】:我通常不会在 UI 测试级别检查按钮属性。我会在我知道有效的核心测试中检查这一点。话虽如此,您实际上可以通过 UI 测试点击按钮并验证如果可能的话没有任何反应。
接下来我会尝试在启用 Calabash 的情况下启动您的应用程序,导航到此屏幕并查询按钮以验证您正在检查您应该检查的属性。
【讨论】:
日本 我可以在点击按钮后查看屏幕。但是 Xamarin 为视图元素公开了诸如“isEnabled”之类的属性 - 显然这不适用于绑定属性(我还需要使用有界文本道具检查它)。提供的 REPL shell 只知道“树”命令,它返回屏幕上的所有视图元素,但不知道它们的属性。通过 c# 代码查询所有元素返回我提到的状态 - isEnabled Prop 是错误的。有没有办法通过将 AppQuery Result 转换为 Android Button 或使用内置方法直接读取特定属性? 如果按钮的 IsEnabled 属性在屏幕上显示为 false 后以编程方式更改为 true 会发生什么?我很好奇它是否在该属性的 Xamarin UI 测试中仍然返回 false ......我很难相信这是一个 MvvmCross 数据绑定问题,并认为这只是一个问题,也许 Xamarin UI 测试总是返回原始创建按钮上的状态? 这个案例有效。我添加了一个修改按钮的启用属性的事件 - Xamarin UI 测试提供了正确的属性值。也许我也可以通过测试绑定来测试这种行为。它真的很奇怪以上是关于将 Xamarin.UITest 与 MvvmCross 绑定一起使用的主要内容,如果未能解决你的问题,请参考以下文章
如何与 Xamarin UITest 中的自定义键盘进行交互?
如何停止 Xamarin.UITest 删除测试之间的数据?
Xamarin.UITest :: 如何点击段落中的特定单词?