C# 将Xamarin.UITest与MvvmCross绑定一起使用
我使用Xamarin.UITest框架来断言某个按钮是否被禁用或启用。 不幸的是,如果按钮的“Enabled”(启用)属性是通过MVX通过绑定设置的,则该似乎不起作用(绑定正在工作-按钮实际上已禁用) 带有两个按钮的axml示例:C# 将Xamarin.UITest与MvvmCross绑定一起使用,c#,xamarin.ios,xamarin,mvvmcross,C#,Xamarin.ios,Xamarin,Mvvmcross,我使用Xamarin.UITest框架来断言某个按钮是否被禁用或启用。 不幸的是,如果按钮的“Enabled”(启用)属性是通过MVX通过绑定设置的,则该似乎不起作用(绑定正在工作-按钮实际上已禁用) 带有两个按钮的axml示例: <xxx.Widgets.Button android:id="@+id/btnSave" android:layout_width="200dp" android:layout_height="wrap_
<xxx.Widgets.Button
android:id="@+id/btnSave"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Save"
style="@style/DefaultButton"
local:MvxBind="Click SaveAndContinueCommand; Enabled SaveButtonActive" />
<xxx.Widgets.Button
android:id="@+id/btnTest"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Test"
style="@style/DefaultButton"
android:enabled="false" />
我需要注意一些不同的东西吗?
有没有人体验过MVX和Xamarin.UITest的结合?我通常不会在UI测试级别检查按钮属性。我会在我知道有效的核心测试中检查这一点。话虽如此,您实际上可以在UI测试中点击按钮,并验证在可能的情况下不会发生任何事情
下一步我要尝试的是在启用葫芦的情况下启动你的应用程序,导航到此屏幕并查询按钮,以验证你正在检查你应该检查的属性。Jap我可以在点击按钮后检查屏幕。但是Xamarin为视图元素公开了“isEnabled”之类的属性——显然这对绑定属性不起作用(我还需要用绑定文本属性检查它)。提供的REPL shell只知道“tree”命令,该命令返回屏幕上的所有视图元素,但不返回它们的属性。通过c#代码查询所有元素会返回我提到的状态-isEnabled Prop是错误的。有没有一种方法可以通过将AppQuery结果强制转换(?)到Android按钮或使用内置方法直接读取特定属性?如果在屏幕上显示为false后,通过编程将按钮的IsEnabled属性更改为true,会发生什么情况?我很好奇,在Xamarin UI测试中该属性是否仍然返回false。。。我很难相信这是一个MvvmCross数据绑定问题,我认为这只是一个问题,可能Xamarin UI测试总是在按钮上返回原始的创建状态?这种情况有效。我添加了一个修改按钮的enabled属性的事件-Xamarin UI测试提供了正确的属性值。也许我也可以用测试绑定来测试这种行为。。真奇怪
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!