使用Xamarin.UITest与MvvmCross绑定

问题描述:

我使用Xamarin.UITest框架来断言,如果某些按钮被禁用或启用。 不幸的是,这似乎不起作用如果按钮的“启用”属性是设置通过绑定槽MVX(绑定正在工作 - 按钮是真正禁用)。使用Xamarin.UITest与MvvmCross绑定

例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" /> 

查询与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的组合?

我通常不会检查UI测试级别的按钮属性。我会在核心测试中检查我知道的工作。据说,你可以通过UI测试来点击按钮,并确认没有任何事情发生,如果可能的话。

我想尝试的下一件事情是启用葫芦启动您的应用程序,导航到此屏幕并查询按钮以验证您正在检查您应该是的属性。

+0

日本我可以在点击按钮后检查屏幕。 但Xamarin公开了诸如视图元素的“isEnabled”属性 - 显然这不适用于绑定属性(我需要检查它与有界文本道具)。 提供的REPL shell只知道“树”命令,该命令返回屏幕上的所有视图元素,但没有它们的属性。通过c#代码查询所有元素会返回我提到的状态 - isEnabled Prop是错误的。 有没有一种方法可以通过将AppQuery结果转换为Android按钮或使用内置方法来直接读取特定属性? – 2015-03-16 08:06:46

+0

如果以编程方式将按钮的IsEnabled属性更改为true后会发生什么情况,它会在屏幕上显示为false?我很好奇它是否仍然在Xamarin UI测试中返回false属性......我很难相信这是一个MvvmCross数据绑定问题,并认为这只是一个问题,也许Xamarin UI测试始终返回原始创建按钮上的状态? – PkL728 2015-03-16 11:32:20

+0

这种情况下工作。我添加了一个修改按钮的启用属性的事件 - Xamarin UI Test提供了正确的属性值。也许我可以用测试绑定来测试这种行为。它真的很奇怪 – 2015-03-18 09:34:32