使用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测试来点击按钮,并确认没有任何事情发生,如果可能的话。
我想尝试的下一件事情是启用葫芦启动您的应用程序,导航到此屏幕并查询按钮以验证您正在检查您应该是的属性。
日本我可以在点击按钮后检查屏幕。 但Xamarin公开了诸如视图元素的“isEnabled”属性 - 显然这不适用于绑定属性(我需要检查它与有界文本道具)。 提供的REPL shell只知道“树”命令,该命令返回屏幕上的所有视图元素,但没有它们的属性。通过c#代码查询所有元素会返回我提到的状态 - isEnabled Prop是错误的。 有没有一种方法可以通过将AppQuery结果转换为Android按钮或使用内置方法来直接读取特定属性? – 2015-03-16 08:06:46
如果以编程方式将按钮的IsEnabled属性更改为true后会发生什么情况,它会在屏幕上显示为false?我很好奇它是否仍然在Xamarin UI测试中返回false属性......我很难相信这是一个MvvmCross数据绑定问题,并认为这只是一个问题,也许Xamarin UI测试始终返回原始创建按钮上的状态? – PkL728 2015-03-16 11:32:20
这种情况下工作。我添加了一个修改按钮的启用属性的事件 - Xamarin UI Test提供了正确的属性值。也许我可以用测试绑定来测试这种行为。它真的很奇怪 – 2015-03-18 09:34:32