XUser のヘッドレス自動化
テストの場合、ユーザーのゲームへの追加を自動化する場合があります。 Microsoft Game Development Kit (GDK) では、ゲームが XUserAddAsync を呼び出すときにのみユーザーが追加されます。 自動化に関して、この関数には 2 つの主な制限があります。
-
AddDefaultUserSilently
フラグを使用してXUserAddAsync
を呼び出すと、UI が表示されなくなります (オートメーションに役立ちます)。 ただし、ゲームを開始したユーザーのみがアクセスできます。 このフラグを使用して API を繰り返し呼び出しても、結果は変わりません。 同じユーザーに新しいハンドルを取得し続けるだけです。 -
AddDefaultUserSilently
フラグなしでXUserAddAsync
を呼び出すと、UIが表示されボタンがクリックされるまで待機します。 これにより自動化が崩れます。
テスト コードにユーザーを追加する自動化を支援するために、Microsoft Game Development Kit (GDK) は、ユーザー入力を必要とする UI 表示なしでユーザーを追加できるヘッドレス オプションをオンにするサポートを備えています。 次の手順は、基本的なアプローチの概要を示しています。
- サインインしているユーザーをコンソールに追加するには、開発者は xbuser (NDA トピック)認可が必須です コマンド ライン ツールを
signin
オプションと共に使用できます。 各ユーザーに対してこの手順を繰り返します。 - ゲームにユーザーを追加するときに通常表示される UI を非表示にするには、以下に示すように、開発者は
HeadlessXuser
オプションで xbconfig (NDA トピック)認可が必須です コマンド ライン ツールを使用できます。xbconfig HeadlessXUser=true
- ゲームを起動します。
- ゲームに参加すると、
AddDefaultUserSilently
フラグを持たないXUserAddAsync
を呼び出すと、ゲームによって関連付けられた未処理のXUserHandle
オブジェクトを持たないコンソールにサインインした最初のユーザーが返されます。 - ゲームが
XUserAddAsync
を呼び出し続けると、最終的にはコンソールにサインインしているユーザーの数が使い果たされます。 その後、XUserAddAsync
はE_ABORT
を返します。 これは、ユーザーがコンソールへのサインインをキャンセルした場合 (または UI からバックアウトされた場合) にXUserAddAsync
が返したエラーとまったく同じです。 - テスト目的の場合、コンソールにサインインしたテスト アカウントの数を知りたい場合があります。 これを容易にするために、
CreateProcess
を呼び出し、list
オプションを指定してwduser
コマンド ライン ツールを起動します。