コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Android のモンキーテストを開始・終了する MenuItem を管理するクラス

ソースコード

using System.Diagnostics;
using UnityEditor;

namespace Kogane
{
    /// <summary>
    /// Android のモンキーテストを開始・終了する MenuItem を管理するクラス
    /// </summary>
    internal static class AndroidMonkeyTestMenuItem
    {
        //================================================================================
        // 定数
        //================================================================================
        private const string MENU_ITEM_ROOT = "Kogane/モンキーテスト/";

        //================================================================================
        // 関数(static)
        //================================================================================
        /// <summary>
        /// モンキーテストを開始します
        /// </summary>
        [MenuItem( MENU_ITEM_ROOT + "開始" )]
        private static void StartMonkeyTestMenuItem()
        {
            StartMonkeyTest( "【パッケージ名】" );
        }

        /// <summary>
        /// モンキーテストを開始します
        /// </summary>
        private static void StartMonkeyTest( string packageName )
        {
            var fileName  = AndroidAdbPath.Path;
            var arguments = $@"shell monkey -v -p ""{packageName}"" --pct-touch 100 1000000";

            var startInfo = new ProcessStartInfo
            {
                FileName               = fileName,
                UseShellExecute        = false,
                RedirectStandardOutput = true,
                CreateNoWindow         = true,
                Arguments              = arguments,
            };

            using var process = Process.Start( startInfo );

            UnityEngine.Debug.Log( $"{fileName} {arguments}" );
        }

        /// <summary>
        /// モンキーテストを終了します
        /// </summary>
        [MenuItem( MENU_ITEM_ROOT + "終了" )]
        private static void StopMonkeyTest()
        {
            var fileName  = AndroidAdbPath.Path;
            var arguments = "shell kill $(pgrep monkey)";

            var startInfo = new ProcessStartInfo
            {
                FileName               = fileName,
                UseShellExecute        = false,
                RedirectStandardOutput = true,
                CreateNoWindow         = true,
                Arguments              = arguments,
            };

            using var process = Process.Start( startInfo );

            UnityEngine.Debug.Log( $"{fileName} {arguments}" );
        }
    }
}

依存するパッケージ