テストの場合、ユーザーのゲームへの追加を自動化する場合があります。 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コマンド ライン ツールを起動します。