1

Xamarin Forms を UITest で動作させようとしていますが、iOS で StyleId プロパティを設定できないようです (Android のライセンスがありません)。

すべてのドキュメントに従いました。これまでに行った手順は次のとおりです。

AppDelegate:

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 が設定されていることがはっきりとわかります。しかし、私が持っている単体テストをデバッグし、REPL からクエリを実行すると、ゼロの結果が返されるため、StyleId プロパティが配線されているようには見えません。Console.WriteLineForms.ViewInitializedAppDelegateapp.Query(c => c.Marked("Test"))

テスト スコープでアプリケーションを実行するときのアプリケーションのコンソール出力を確認したいのですが、[アプリケーション出力] ウィンドウまたは [テスト結果] ウィンドウ (出力をオンに切り替えた状態) に何も出力されないようです...

私が欠けているものに関するアイデアはありますか?

4

2 に答える 2

2

今日これに遭遇しました。手動で「ファイル -> シミュレーターをリセット」するよりも簡単な回避策があり、それは[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();
}
于 2015-03-18T04:23:26.313 に答える