@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/2026/03/25/004-unit-test-vs-integration-test-boundary-guide/#article>
    schema:about <https://comcomponent.com/knowledge/unit-test/>, <https://comcomponent.com/knowledge/integration-test/> ;
    schema:mentions <https://comcomponent.com/knowledge/e2e-test/>, <https://comcomponent.com/knowledge/test-stub/>, <https://comcomponent.com/knowledge/test-mock/>, <https://comcomponent.com/knowledge/test-fake/>, <https://comcomponent.com/knowledge/format-boundary/>, <https://comcomponent.com/knowledge/wiring-boundary/>, <https://comcomponent.com/knowledge/environment-boundary/>, <https://comcomponent.com/knowledge/time-boundary/>, <https://comcomponent.com/knowledge/branching-coverage/>, <https://comcomponent.com/knowledge/mock-overuse-smell/>, <https://comcomponent.com/knowledge/three-layer-test-structure/>, <https://comcomponent.com/knowledge/com-apartment-model/>, <https://comcomponent.com/knowledge/bitness-match-requirement/> .

<https://comcomponent.com/knowledge/unit-test/> a skos:Concept ;
    skos:prefLabel "ユニットテスト"@ja ;
    skos:definition "分離された1責務の正しさを、外部資源を切り離して確かめるテストの層のこと。"@ja ;
    skos:altLabel "Unit Test" ;
    skos:altLabel "単体テスト"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/branching-coverage/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/wiring-boundary/> .

<https://comcomponent.com/knowledge/integration-test/> a skos:Concept ;
    skos:prefLabel "結合テスト"@ja ;
    skos:definition "複数コンポーネントの接続と、インフラやフレームワークを含む挙動を確かめるテストの層のこと。"@ja ;
    skos:altLabel "Integration Test" ;
    skos:altLabel "統合テスト"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/format-boundary/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/wiring-boundary/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/environment-boundary/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/time-boundary/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/branching-coverage/> .

<https://comcomponent.com/knowledge/test-stub/> a skos:Concept ;
    skos:prefLabel "スタブ"@ja ;
    skos:definition "既存の依存関係を置き換える、コントロール可能な代役のこと。決められた値を返すために使う。"@ja ;
    skos:altLabel "Stub" .

<https://comcomponent.com/knowledge/test-mock/> a skos:Concept ;
    skos:prefLabel "モック"@ja ;
    skos:definition "テストの合否を左右するAssert操作の対象になる、呼ばれ方そのものを検証する代役のこと。"@ja ;
    skos:altLabel "Mock" .

<https://comcomponent.com/knowledge/test-fake/> a skos:Concept ;
    skos:prefLabel "フェイク"@ja ;
    skos:definition "スタブやモックを指す総称、または本物と同じ振る舞いを軽い実装で置き換えたもののこと。"@ja ;
    skos:altLabel "Fake" ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/environment-boundary/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/format-boundary/> .

<https://comcomponent.com/knowledge/format-boundary/> a skos:Concept ;
    skos:prefLabel "フォーマットの境界"@ja ;
    skos:definition "JSON/XML/CSVのシリアライズやDBのスキーマ・mapping、文字コードなど、データ形式の変換に関わる境界のこと。"@ja ;
    skos:altLabel "Format Boundary" .

<https://comcomponent.com/knowledge/wiring-boundary/> a skos:Concept ;
    skos:prefLabel "配線の境界"@ja ;
    skos:definition "DI登録、ルーティング、モデルバインディング、middlewareなど、実部品同士のつなぎ込みに関わる境界のこと。"@ja ;
    skos:altLabel "Wiring Boundary" .

<https://comcomponent.com/knowledge/environment-boundary/> a skos:Concept ;
    skos:prefLabel "環境の境界"@ja ;
    skos:definition "ファイル権限、COM登録、32bit/64bit、STA/MTAなど、OSや実行環境の実挙動に関わる境界のこと。"@ja ;
    skos:altLabel "Environment Boundary" .

<https://comcomponent.com/knowledge/time-boundary/> a skos:Concept ;
    skos:prefLabel "時間の境界"@ja ;
    skos:definition "timeout、cancellation、retryの実挙動、race conditionなど、時間と並行性に関わる境界のこと。"@ja ;
    skos:altLabel "Time Boundary" .

<https://comcomponent.com/knowledge/branching-coverage/> a skos:Concept ;
    skos:prefLabel "分岐の総当たり"@ja ;
    skos:definition "クーポンの有無や在庫の有無など、条件分岐や入力パターンを網羅的に確認することのこと。"@ja ;
    skos:altLabel "Branching Coverage" .

<https://comcomponent.com/knowledge/bitness-match-requirement/> a skos:Concept ;
    skos:prefLabel "bitness一致要件"@ja ;
    skos:definition "ネイティブモジュール(in-procのCOMコンポーネント、P/Invokeで呼ぶDLL、ベンダー提供SDKのDLLなど)を読み込むホストプロセスと、そのモジュールのビット構成(32bit/64bit)が一致していなければならないという制約。"@ja ;
    skos:altLabel "32bit/64bitの一致"@ja ;
    skos:altLabel "bitness match" .

<https://comcomponent.com/knowledge/com-apartment-model/> a skos:Concept ;
    skos:prefLabel "COMアパートメントモデル(STA/MTA)"@ja ;
    skos:definition "どのスレッドからCOMコンポーネントを呼んでよいかを決める、COMのスレッドモデルの約束。"@ja ;
    skos:altLabel "STA" ;
    skos:altLabel "MTA" ;
    skos:altLabel "Single/Multi Threaded Apartment" ;
    skos:broader <https://comcomponent.com/knowledge/com/> .

<https://comcomponent.com/knowledge/mock-overuse-smell/> a skos:Concept ;
    skos:prefLabel "mockが増えすぎる兆候"@ja ;
    skos:definition "mockが多数必要になる、setupが長い、arrangeが本体より長いなど、テストが読みにくくなっている兆候のこと。"@ja ;
    skos:altLabel "Mock Overuse Smell" .

<https://comcomponent.com/knowledge/three-layer-test-structure/> a skos:Concept ;
    skos:prefLabel "3層のテスト構成"@ja ;
    skos:definition "コア層をユニットテストで厚く、境界層を狭い結合テストで、全体層を少数のスモーク/E2Eで構成するテストの配置構成のこと。"@ja ;
    skos:altLabel "コア層・境界層・全体層"@ja ;
    ks:requires <https://comcomponent.com/knowledge/unit-test/> ;
    ks:requires <https://comcomponent.com/knowledge/integration-test/> ;
    ks:requires <https://comcomponent.com/knowledge/e2e-test/> .

<https://comcomponent.com/knowledge/e2e-test/> a skos:Concept ;
    skos:prefLabel "E2Eテスト"@ja ;
    skos:definition "デプロイ済みアプリや複数サービス、実ブラウザーを通してアプリ全体のユーザーフローを確かめるテストの層のこと。"@ja ;
    skos:altLabel "機能テスト"@ja ;
    skos:altLabel "End-to-End Test" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unit-test/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/test-stub/> ;
    schema:description "テスト対象を協力オブジェクトから切り離す必要がある場合、入力条件を固定するためにコントロール可能な代役であるstubを使う。純粋関数や値オブジェクトのユニットテストには代役自体が不要で、stub・mock・fakeは目的に応じて使い分ける選択肢である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unit-test/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/test-mock/> ;
    schema:description "呼び出しが行われたこと自体をAssertの対象にしたい場合に、その検証のためmockを使う。純粋関数や値オブジェクトのユニットテストには代役自体が不要で、stub・mock・fakeは目的に応じて使い分ける選択肢である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unit-test/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/test-fake/> ;
    schema:description "軽量な代替実装で足りる場合にfakeを使う(stubやmockの総称として使われることもある)。純粋関数や値オブジェクトのユニットテストには代役自体が不要で、stub・mock・fakeは目的に応じて使い分ける選択肢である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/integration-test/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/format-boundary/> ;
    schema:description "JSON/CSVのシリアライズやDBのmappingなど、フォーマットの境界を確かめる主力として結合テストが本記事の推奨である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/integration-test/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/wiring-boundary/> ;
    schema:description "DI登録、ルーティング、モデルバインディングなど配線の境界を確かめる主力として結合テストが本記事の推奨である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/testing?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/integration-test/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/environment-boundary/> ;
    schema:description "ファイル権限、COM登録、32bit/64bit、STA/MTAなど環境の境界を確かめる主力として結合テストが本記事の推奨である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/integration-test/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/time-boundary/> ;
    schema:description "実際にtimeoutが効くか、cancellationが伝播するかなど時間の境界を確かめる主力として結合テストが本記事の推奨である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unit-test/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/branching-coverage/> ;
    schema:description "クーポンあり/なし、在庫あり/なしのように分岐条件が増える入力パターンの総当たりには、ユニットテストが本記事の推奨である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/environment-boundary/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/bitness-match-requirement/> ;
    schema:description "環境の境界には、32bit/64bitのビット数一致という制約の確認が含まれる(ファイル権限やCOM登録など他の懸念も環境の境界に含まれ、bitnessはそのうちの1つの例に過ぎない)"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/environment-boundary/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/com-apartment-model/> ;
    schema:description "環境の境界には、STA/MTAのようなCOMのアパートメントモデルの確認が含まれる(COMやActiveXを含む構成の場合の例であり、環境の境界すべてにCOMアパートメントモデルが関わるわけではない)"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/test-mock/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/mock-overuse-smell/> ;
    schema:description "mockによる呼び出し検証をユニットテストに積み重ねすぎると、mockが増えすぎる兆候につながることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unit-test/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/wiring-boundary/> ;
    schema:description "DI登録やモデルバインディングなど配線の境界を、mockを積み重ねたユニットテストで確かめようとすることは、本物との接続の証明にならないため推奨されない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/testing?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/three-layer-test-structure/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/unit-test/> ;
    schema:description "3層のテスト構成のコア層は、業務ルールや状態遷移をユニットテストで厚く持つ"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/three-layer-test-structure/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/integration-test/> ;
    schema:description "3層のテスト構成の境界層は、DBやファイル、serializer、DIなどに狭い結合テストを置く"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/three-layer-test-structure/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/e2e-test/> ;
    schema:description "3層のテスト構成の全体層は、起動確認や主要フローを少数のスモーク/E2Eで押さえる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/integration-test/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/branching-coverage/> ;
    schema:description "結合テストで入力パターンを総当たりすることは重くなりすぎるため推奨されず、代表的なシナリオへ絞ることが勧められている"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/test-fake/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/environment-boundary/> ;
    schema:description "in-memoryのfakeではファイル権限やCOM登録、32bit/64bitなど環境の境界の意味がかなり落ちるため、fakeをこの確認に用いることは推奨されない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/test-fake/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/format-boundary/> ;
    schema:description "wire formatのズレはfakeでは見つけにくいため、fakeをフォーマットの境界の確認に用いることは推奨されない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-10.0> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
