Skip to content

PR #2239

PR #2239 #34

GitHub Actions / Test results succeeded Jan 7, 2025 in 0s

112 passed, 0 failed and 0 skipped

Tests passed successfully

Report Passed Failed Skipped Time
samples/ConsoleAppWithDI/solution/tests/Maris.ConsoleApp.IntegrationTests/TestResults/_fv-az525-98_2025-01-07_06_36_47.trx 15✅ 3s
samples/ConsoleAppWithDI/solution/tests/Maris.ConsoleApp.UnitTests/TestResults/_fv-az525-98_2025-01-07_06_36_47.trx 97✅ 3s

✅ samples/ConsoleAppWithDI/solution/tests/Maris.ConsoleApp.IntegrationTests/TestResults/_fv-az525-98_2025-01-07_06_36_47.trx

15 tests were completed in 3s with 15 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Maris.ConsoleApp.IntegrationTests.ScopeTests.ScopedTest 5✅ 916ms
Maris.ConsoleApp.IntegrationTests.ScopeTests.SingletonTest 5✅ 177ms
Maris.ConsoleApp.IntegrationTests.ScopeTests.TransientTest 5✅ 138ms

✅ Maris.ConsoleApp.IntegrationTests.ScopeTests.ScopedTest

✅ Scopedで登録したインスタンスはコマンドの実行時に破棄されていない
✅ Scopedで登録したインスタンスはコマンド実行時に1回だけ初期化される
✅ Scopedで登録したインスタンスはホストの終了時に1回破棄が実行される
✅ Scopedで登録したインスタンスはホストの終了時に1回破棄される
✅ Scopedで登録したインスタンスは型ごとに1つだけ

✅ Maris.ConsoleApp.IntegrationTests.ScopeTests.SingletonTest

✅ Singletonで登録したインスタンスはコマンドの実行時に破棄されていない
✅ Singletonで登録したインスタンスはコマンド実行時に1回だけ初期化される
✅ Singletonで登録したインスタンスはホストの終了時に1回破棄が実行される
✅ Singletonで登録したインスタンスはホストの終了時に1回破棄される
✅ Singletonで登録したインスタンスは型ごとに1つだけ

✅ Maris.ConsoleApp.IntegrationTests.ScopeTests.TransientTest

✅ Transientで登録したインスタンスはインジェクションされるごとに1つ
✅ Transientで登録したインスタンスはインジェクション時に毎回初期化される
✅ Transientで登録したインスタンスはコマンドの実行時に破棄されていない
✅ Transientで登録したインスタンスはホストの終了時に1回破棄が実行される
✅ Transientで登録したインスタンスはホストの終了時に1回破棄される

✅ samples/ConsoleAppWithDI/solution/tests/Maris.ConsoleApp.UnitTests/TestResults/_fv-az525-98_2025-01-07_06_36_47.trx

97 tests were completed in 3s with 97 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Maris.ConsoleApp.UnitTests.Core.AsyncCommandTest 5✅ 198ms
Maris.ConsoleApp.UnitTests.Core.CommandAttributeTest 3✅ 17ms
Maris.ConsoleApp.UnitTests.Core.CommandBaseTest 12✅ 6ms
Maris.ConsoleApp.UnitTests.Core.CommandExecutorTest 14✅ 113ms
Maris.ConsoleApp.UnitTests.Core.CommandTypeExtensionsTest 4✅ 102ms
Maris.ConsoleApp.UnitTests.Core.ConsoleAppContextTest 5✅ 34ms
Maris.ConsoleApp.UnitTests.Core.InvalidParameterExceptionTest 5✅ 107ms
Maris.ConsoleApp.UnitTests.Core.SyncCommandTest 5✅ 209ms
Maris.ConsoleApp.UnitTests.Hosting.CommandParameterTypeCollectionTest 7✅ 16ms
Maris.ConsoleApp.UnitTests.Hosting.ConsoleAppContextFactoryTest 7✅ 228ms
Maris.ConsoleApp.UnitTests.Hosting.ConsoleAppHostedServiceTest 16✅ 114ms
Maris.ConsoleApp.UnitTests.Hosting.ConsoleAppSettingsTest 2✅ 7ms
Maris.ConsoleApp.UnitTests.Hosting.DefaultCommandManagerTest 5✅ 17ms
Maris.ConsoleApp.UnitTests.Hosting.ServiceCollectionExtensionsTest 7✅ 207ms

✅ Maris.ConsoleApp.UnitTests.Core.AsyncCommandTest

✅ IAsyncCommandのExecuteAsync_ExecuteAsyncメソッドがコンテキストに指定したパラメーターとキャンセルトークンを伴って1回呼び出される
✅ Initialize_パラメーターの型とコンテキストのパラメーター型が一致しない_InvalidOperationExceptionが発生する
✅ Initialize_パラメーターの型にインターフェースを使用できる
✅ Parameter_ConsoleAppContextに設定したパラメーターを取得できる
✅ ValidateAllParameter_ValidateParameterメソッドがコンテキストに指定したパラメーターを伴って1回呼び出される

✅ Maris.ConsoleApp.UnitTests.Core.CommandAttributeTest

✅ CommandType_コンストラクターで指定したコマンドの型を取得できる
✅ Constructor_コマンドの型がnull_ArgumentNullExceptionが発生する
✅ Constructor_コマンドの型がコマンドの定義を満たしていない_ArgumentExceptionが発生する

✅ Maris.ConsoleApp.UnitTests.Core.CommandBaseTest

✅ CommandName_初期値はnull
✅ CommandName_初期化時に指定したコマンド名を取得できる
✅ Context_初期値のまま取得する_InvalidOperationExceptionが発生する
✅ Context_初期化時に指定したコンテキストを取得できる
✅ Initialize_nullで初期化する_ArgumentNullExceptionが発生する
✅ ValidateAllParameter_コマンドクラスのロジック内でパラメーターの入力値検証エラーがあった_InvalidParameterExceptionが発生する
✅ ValidateAllParameter_入力パラメータのクラスにプロパティがあるが検証属性が定義されていない_例外が発生しない
✅ ValidateAllParameter_入力パラメータのクラスにプロパティが定義されていない_例外が発生しない
✅ ValidateAllParameter_入力パラメータのクラスに検証属性を定義したプロパティがあり一部検証に失敗する値が設定されている_検証失敗メッセージを伴うInvalidParameterExceptionが発生する
✅ ValidateAllParameter_入力パラメータのクラスに検証属性を定義したプロパティがあり検証に成功する値が設定されている_例外が発生しない(param1: "", param2: 0)
✅ ValidateAllParameter_入力パラメータのクラスに検証属性を定義したプロパティがあり検証に成功する値が設定されている_例外が発生しない(param1: "1234567890", param2: 5)
✅ ValidateAllParameter_入力パラメータのクラスに検証属性を定義したプロパティがあり複数検証に失敗する値が設定されている_検証失敗メッセージを伴うInvalidParameterExceptionが発生する

✅ Maris.ConsoleApp.UnitTests.Core.CommandExecutorTest

✅ CommandName_ICommandManagerで生成したコマンドオブジェクトの名前を取得できる(commandName: "")
✅ CommandName_ICommandManagerで生成したコマンドオブジェクトの名前を取得できる(commandName: "dummy-command")
✅ CommandName_ICommandManagerで生成したコマンドオブジェクトの名前を取得できる(commandName: null)
✅ Constructor_ICommandManagerがコマンドを作成できない_ArgumentExceptionが発生する
✅ Constructor_ICommandManagerのCreateCommandが1回呼び出される
✅ Constructor_managerがnull_ArgumentNullExceptionが発生する
✅ Constructor_ロガーがnullの場合_ArgumentNullExceptionが発生する
✅ ExecuteCommandAsync_AsyncCommandの派生コマンドのExecuteAsyncがパラメーターとキャンセルトークンを伴い1回呼び出される
✅ ExecuteCommandAsync_AsyncCommandの派生コマンドを実行可能_コマンドの戻り値を取得できる
✅ ExecuteCommandAsync_SyncCommandの派生コマンドにパラメーターが引き渡される
✅ ExecuteCommandAsync_SyncCommandの派生コマンドを実行可能_コマンドの戻り値を取得できる
✅ ExecuteCommandAsync_コマンド内のカスタム入力値検証に失敗した_InvalidParameterExceptionが発生する
✅ ExecuteCommandAsync_パラメーターのカスタム入力検証に失敗した_InvalidParameterExceptionが発生する
✅ ExecuteCommandAsync_パラメーターの入力検証に失敗した_InvalidParameterExceptionが発生する

✅ Maris.ConsoleApp.UnitTests.Core.CommandTypeExtensionsTest

✅ IsCommandType_CommandBaseだけを継承した型を指定_false
✅ IsCommandType_SyncCommandまたはAsyncCommandを継承した型を指定_true(t: typeof(Maris.ConsoleApp.UnitTests.Core.CommandTypeExtensionsTest+AsyncCommandImpl))
✅ IsCommandType_SyncCommandまたはAsyncCommandを継承した型を指定_true(t: typeof(Maris.ConsoleApp.UnitTests.Core.CommandTypeExtensionsTest+SyncCommandImpl))
✅ IsCommandType_コマンドとは無関係の型を指定_false

✅ Maris.ConsoleApp.UnitTests.Core.ConsoleAppContextTest

✅ CommandName_パラメータークラスに付与したコマンドの名前を取得できる
✅ CommandType_パラメータークラスに付与したコマンドの型を取得できる
✅ Constructor_パラメーターがnull_ArgumentNullExceptionが発生する
✅ Constructor_パラメーターにCommandAttributeがついていない_ArgumentExceptionが発生する
✅ Parameter_コンストラクタに指定したパラメーターを取得できる

✅ Maris.ConsoleApp.UnitTests.Core.InvalidParameterExceptionTest

✅ Message_メッセージの既定値_コマンドのパラメーターに入力エラーがあります
✅ Message_検証結果が1件登録されている_メンバー名とエラーメッセージが含まれている
✅ Message_検証結果が2件登録されている場合_メンバー名とエラーメッセージが含まれている
✅ ValidationResults_検証結果のリストを指定_指定したリストを取得できる
✅ ValidationResults_検証結果のリストを指定しない_空のリスト

✅ Maris.ConsoleApp.UnitTests.Core.SyncCommandTest

✅ Initialize_パラメーターの型とコンテキストのパラメーター型が一致しない_InvalidOperationExceptionが発生する
✅ Initialize_パラメーターの型にインターフェースを使用できる
✅ ISyncCommandのExecute_Executeメソッドがコンテキストに指定したパラメーターを伴って1回呼び出される
✅ Parameter_ConsoleAppContextに設定したパラメーターを取得できる
✅ ValidateAllParameter_ValidateParameterメソッドがコンテキストに指定したパラメーターを伴って1回呼び出される

✅ Maris.ConsoleApp.UnitTests.Hosting.CommandParameterTypeCollectionTest

✅ AddCommandParameterTypeFrom_クラスの定義されていないアセンブリを読み込む_パラメーターの型は登録されない
✅ AddCommandParameterTypeFrom_パラメーターではないクラスだけが定義されたアセンブリを読み込む_パラメーターの型は登録されない
✅ AddCommandParameterTypeFrom_パラメーターを含むクラスが定義されたアセンブリを読み込む_アセンブリからパラメーターの型だけが登録される
✅ AddCommandParameterTypeFrom_同じ名前のコマンドがある_ArgumentExceptionが発生する
✅ GetEnumerator_要素を追加せずに取得する_空の列挙子
✅ InitializeFromAllAssemblies_現在のアプリケーションドメインに読み込まれているアセンブリを登録できる
✅ LoadedAssemblies_読み込んだアセンブリのリストを取得できる

✅ Maris.ConsoleApp.UnitTests.Hosting.ConsoleAppContextFactoryTest

✅ Constructor_ConsoleAppSettingsがnull_ArgumentNullExceptionが発生する
✅ Constructor_IApplicationProcessがnull_ArgumentNullExceptionが発生する
✅ Constructor_ILoggerがnull_ArgumentNullExceptionが発生する
✅ CreateConsoleAppContext_正常系_起動パラメーターの情報が含まれたコンテキストを生成できる
✅ CreateConsoleAppContext_読み込んだアセンブリ内にCommandAttributeを付与したパラメーターがない_InvalidOperationExceptionが発生する
✅ CreateConsoleAppContext_起動パラメーターが情報レベルでログに出力される
✅ CreateConsoleAppContext_起動パラメーターのパースに失敗する_DefaultValidationErrorExitCodeに設定した終了コードでプロセスが終了する

✅ Maris.ConsoleApp.UnitTests.Hosting.ConsoleAppHostedServiceTest

✅ Constructor_executorがnull_ArgumentNullExceptionが発生する
✅ Constructor_lifetimeがnull_ArgumentNullExceptionが発生する
✅ Constructor_loggerがnull_ArgumentNullExceptionが発生する
✅ Constructor_settingsがnull_ArgumentNullExceptionが発生する
✅ StartAsync_コマンドが完了_IHostApplicationLifetimeのStopApplicationが1回呼び出される(context: ConsoleAppContext { CommandName = "dummy-command", CommandType = typeof(Maris.ConsoleApp.UnitTests.Hosting.ConsoleAppHostedServiceTest+SyncCommandImpl), Parameter = CommandParameter { } }, command: SyncCommandImpl { })
✅ StartAsync_コマンドが完了_IHostApplicationLifetimeのStopApplicationが1回呼び出される(context: ConsoleAppContext { CommandName = "error-command", CommandType = typeof(Maris.ConsoleApp.UnitTests.Hosting.ConsoleAppHostedServiceTest+TestCommand), Parameter = CommandParameter { } }, command: TestCommand { })
✅ StartAsync_コマンドが完了_IHostApplicationLifetimeのStopApplicationが1回呼び出される(context: ConsoleAppContext { CommandName = "validation-error-command", CommandType = typeof(Maris.ConsoleApp.UnitTests.Hosting.ConsoleAppHostedServiceTest+ValidationErrorCommand), Parameter = CommandParameter { } }, command: ValidationErrorCommand { })
✅ StartAsync_コマンドが正常に完了する_コマンドから返却した終了コードが設定される
✅ StartAsync_コマンドの入力値エラーがある_入力値検証エラーの終了コードが設定される
✅ StartAsync_コマンドの実行エラー_エラーの情報がエラーログに記録される
✅ StartAsync_コマンドの実行時に例外が発生する_既定のエラー終了コードが設定される
✅ StartAsync_コマンドの開始について情報レベルでログに記録される
✅ StartAsync_パラメーターの検証エラー_エラーの情報がエラーログに記録される
✅ StopAsync_コマンドの実行前に呼び出す_終了コード0のホスト終了ログが情報レベルで出力される
✅ StopAsync_コマンドの実行完了後に呼び出す_コマンドの返却した終了コードがホスト終了ログに出力される
✅ StopAsync_コマンドの実行時間がログに出力される

✅ Maris.ConsoleApp.UnitTests.Hosting.ConsoleAppSettingsTest

✅ DefaultErrorExitCode_intの最大値
✅ DefaultValidationErrorExitCode_intの最小値

✅ Maris.ConsoleApp.UnitTests.Hosting.DefaultCommandManagerTest

✅ Constructor_ConsoleAppContextがnull_ArgumentNullExceptionが発生する
✅ Constructor_IServiceProviderがnull_ArgumentNullExceptionが発生する
✅ CreateCommand_マネージャーに設定したコンテキストの情報がコマンドにも設定される
✅ ReleaseCommand_スコープがクローズされる
✅ ReleaseCommand_複数回呼び出しても例外にならずスコープはクローズされる

✅ Maris.ConsoleApp.UnitTests.Hosting.ServiceCollectionExtensionsTest

✅ AddConsoleAppService_必要なサービスが登録される
✅ AddConsoleAppSettings_ConsoleAppSettingsの設定処理を指定しない_既定のオブジェクトで初期化される
✅ AddConsoleAppSettings_ConsoleAppSettingsの設定処理を指定する_指定した値で初期化される
✅ アセンブリ内にコマンドが登録されていない_InvalidOperationExceptionが発生する
✅ 登録されていないコマンド名を指定_検証エラーのエラーコードを伴ってApplicationExceptionが発生する
✅ 登録されているコマンド名を指定_DIコンテナーからConsoleAppContextが生成できる(commandName: "test-command1", parameterType: typeof(Maris.ConsoleApp.UnitTests.Hosting.ServiceCollectionExtensionsTest+TestParameter1), commandType: typeof(Maris.ConsoleApp.UnitTests.Hosting.ServiceCollectionExtensionsTest+TestCommand1))
✅ 登録されているコマンド名を指定_DIコンテナーからConsoleAppContextが生成できる(commandName: "test-command2", parameterType: typeof(Maris.ConsoleApp.UnitTests.Hosting.ServiceCollectionExtensionsTest+TestParameter2), commandType: typeof(Maris.ConsoleApp.UnitTests.Hosting.ServiceCollectionExtensionsTest+TestCommand2))