如何为 Xamarin 按钮编写 UITest?
How do I write UITests for Xamarin Buttons?
我正在尝试在 Xamarin 中编写跨平台测试来检查按钮上的标签。这适用于我 XAML:
中的简单 <Label />
项目
static readonly Func<AppQuery, AppQuery> Welcome = c => c.Marked("Welcome").Text("Welcome!");
但是当我用 <Button />
尝试同样的事情时:
static readonly Func<AppQuery, AppQuery> NewButton = c => c.Button("NewLine").Text("New Line");
我的 iOS 测试失败,但 Android 测试通过。
问题似乎是 XAML 字段映射不同,具体取决于我是 运行 iOS 还是 Android。
这是我在Android中看到的:
这就是我在 iOS 中看到的:
在 Android 中,AutomationId
映射到 Label
,Text
映射到 Text
(Label
字段不不存在)。
在 iOS 中,AutomationId
映射到 Id
,Text
映射到 Label
(并且 Text
为空)。
这是否意味着我需要为 iOS 和 Android 编写不同的测试?或者有更聪明的方法吗?
为了继续前进,我只是这样做了……但感觉不是最理想的。
private void TestButton(string automationId, string text, string errorMessage)
{
Func<AppQuery, AppQuery> query = c => c.Button(automationId);
AppResult[] result = app.Query(query);
Assert.IsTrue(result.Length > 0, "No buttons with ID '" + automationId + "' found.");
var textField = result[0]?.Text;
var labelField = result[0]?.Label;
Assert.IsTrue(textField == text || labelField == text, errorMessage);
}
我正在尝试在 Xamarin 中编写跨平台测试来检查按钮上的标签。这适用于我 XAML:
中的简单<Label />
项目
static readonly Func<AppQuery, AppQuery> Welcome = c => c.Marked("Welcome").Text("Welcome!");
但是当我用 <Button />
尝试同样的事情时:
static readonly Func<AppQuery, AppQuery> NewButton = c => c.Button("NewLine").Text("New Line");
我的 iOS 测试失败,但 Android 测试通过。
问题似乎是 XAML 字段映射不同,具体取决于我是 运行 iOS 还是 Android。
这是我在Android中看到的:
这就是我在 iOS 中看到的:
在 Android 中,AutomationId
映射到 Label
,Text
映射到 Text
(Label
字段不不存在)。
在 iOS 中,AutomationId
映射到 Id
,Text
映射到 Label
(并且 Text
为空)。
这是否意味着我需要为 iOS 和 Android 编写不同的测试?或者有更聪明的方法吗?
为了继续前进,我只是这样做了……但感觉不是最理想的。
private void TestButton(string automationId, string text, string errorMessage)
{
Func<AppQuery, AppQuery> query = c => c.Button(automationId);
AppResult[] result = app.Query(query);
Assert.IsTrue(result.Length > 0, "No buttons with ID '" + automationId + "' found.");
var textField = result[0]?.Text;
var labelField = result[0]?.Label;
Assert.IsTrue(textField == text || labelField == text, errorMessage);
}