c# - Xamarin Forms 没有为 UITest 设置 StyleId

标签 c# ios xamarin xamarin.uitest

我试图让 Xamarin Forms 与 UITest 一起工作,但我似乎无法在 iOS 中设置 StyleId 属性(我没有 Android 的许可)。

我已按照所有文档进行操作,这些是我迄今为止采取的步骤:

应用委托(delegate):

static readonly IntPtr setAccessibilityIdentifier_Handle = Selector.GetHandle("setAccessibilityIdentifier:");

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    Forms.Init();

    Forms.ViewInitialized += (object sender, ViewInitializedEventArgs e) => {
        // http://developer.xamarin.com/recipes/testcloud/set-accessibilityidentifier-ios/
        if (null != e.View.StyleId) {
            e.NativeView.AccessibilityIdentifier = e.View.StyleId;
            Console.WriteLine("Set AccessibilityIdentifier: " + e.View.StyleId);
        }
    };

    ...

    #if DEBUG
    Xamarin.Calabash.Start();
    #endif

    ...
}

XAML 内容页面:

<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
             x:Class="Ignite.Abacus.Mobile.OptionsView"
             Title="Options">
    <ContentPage.Content>
        <StackLayout>
            <Label Text="Test" StyleId="Test" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

现在,这是关键:

如果我调试应用程序,我可以清楚地看到 StyleId 正在设置,因为 Console.WriteLineForms.ViewInitialized 处理程序中调用AppDelegate 正在写入应用程序输出。但是,如果我调试我拥有的单元测试并从 REPL 查询它,它似乎不会连接 StyleId 属性,因为 app.Query(c => c.Marked("Test"))返回零结果。

在测试范围内运行应用程序时,我很想看到它的控制台输出 - 但它似乎没有向应用程序输出窗口或测试结果窗口(输出已打开)输出任何内容...

关于我遗漏了什么有什么想法吗?

最佳答案

今天碰到这个;有一个比手动“文件 -> 重置模拟器”更简单的解决方法,那就是配置您的 [SetUp] 自动为您完成:

using System.Diagnostics;

[SetUp]
public override void SetUp()
{
    const string simulatorId = "2261E5E1-758A-4967-8BF2-181E8099379F"; // iPhone 5s iOS 8.2
    ResetSimulator(simulatorId);

    // an API key is required to publish on Xamarin Test Cloud for remote, multi-device testing
    app = ConfigureApp.iOS.AppBundle(PathToIPA).DeviceIdentifier(simulatorId).EnableLocalScreenshots().ApiKey(Constants.XamarinTestCloudApiKey).StartApp();
}

public static void ResetSimulator(string deviceId)
{
    var shutdownProcess = Process.Start("xcrun", string.Format("simctl shutdown {0}", deviceId));
    shutdownProcess.WaitForExit();
    var eraseProcess = Process.Start("xcrun", string.Format("simctl erase {0}", deviceId));
    eraseProcess.WaitForExit();
}

关于c# - Xamarin Forms 没有为 UITest 设置 StyleId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27473571/

相关文章:

ios - 自定义 tableview 单元格未出现

ios - 如何使用 Swift 类在数组中添加信息

iOS - UIImage imageNamed : returns null on device

mvvm - ViewCell 未绑定(bind)

.net - 为 .NET Core/UWP 中的单个 HTTP 请求设置自定义 WebProxy

c# - 无法将 Action<object, EventArgs> 转换为 EventHandler?

c# - 如何使用 ClearScript 将 JavaScript 数组传递到主机?

twitter - 如何在 .NET 中从经过身份验证的 Twitter oauth_token 注册/登录解析用户?

c# - 查找组件非可视化 C#

c# - 带有 Windows 7 拖动增强功能的无边框窗体