Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Xamarin.UITest与MvvmCross绑定一起使用_C#_Xamarin.ios_Xamarin_Mvvmcross - Fatal编程技术网

C# 将Xamarin.UITest与MvvmCross绑定一起使用

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_

我使用Xamarin.UITest框架来断言某个按钮是否被禁用或启用。 不幸的是,如果按钮的“Enabled”(启用)属性是通过MVX通过绑定设置的,则该似乎不起作用(绑定正在工作-按钮实际上已禁用)

带有两个按钮的axml示例:

    <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!