5

非常に大きなVisual Studioソリューションのテストを開発し、整理し始めています。 (はい、私は、プロジェクトがほぼ完了したときではなく、コードと一緒にテストを開発するべきだったと思っていますが、物事はそのままです)大きなVisual Studioソリューションのユニット/統合テスト組織

私は、Visual Studioソリューションしかし、私はそのアドレス統合テストも見ていませんでした。すでに大規模なコードベースを混乱させないように、テストプロジェクトを配置する場所についてのいくつかのガイダンスに感謝します。

ここでは、ソリューション内の基本的な階層構造について説明します。 (.projで終わらないすべての項目は、プロジェクトまたはソリューションフォルダ内のフォルダです。)

  • HardwareServices
    • HardwareService1
      • HardwareService1.Core.proj
      • HardwareService1.Host.proj
      • HardwareService1.Service.proj
    • HardwareService2
      • HardwareService2.Core.proj
      • HardwareService2.Host.proj
      • HardwareService2.Service.proj
  • インフラ
    • MyApp.Database.proj
    • MyApp.Infrastructure .proj
    • MyApp.ReportViewer.proj
    • MyApp.SettingsManager.proj
  • AppModules
    • AppModule1.proj
      • 共通
      • レポート
      • サービス
      • のviewmodels
      • ビュー
    • AppModule2.proj(他のAppModules同様の構造)
    • AppModule3.proj(他のAppModules同様の構造)
  • モジュール
    • ComputeEngine.proj
    • Footer.proj
    • Header.proj
    • CommonServices。projの

は、私の考えはすべての生産コードプロジェクトのために一つのテストプロジェクトを作成する、「テスト」と呼ばれるソリューションフォルダを作成し、その後、上記の階層を模倣することでした。各テストプロジェクトでは、 "UnitTests"と "IntegrationTests"というフォルダを作成します。

私は、一貫した命名/組織体系を作成して、新しいテストの場所と既存のテストの場所をあいまいにしないようにします。このプロジェクト/アプリケーションのサイズが大きければ、後で痛みを感じないように、構造物をゲートの外に出すことができます。

ありがとうございました。

答えて

2

私たちが採用した命名規則は、projectName.Tests.UnitprojectName.Tests.Integrationです。

  • HardwareService1
    • HardwareService1.Core.proj
    • HardwareService1.Host.proj
    • HardwareService1.Service.proj
    • :既存の構造では

      あなたはこのような何かを持っているでしょうテスト

      • HardwareService1.Core .Tests.Unit
      • HardwareService1.Core.Tests.Integration

ルートフォルダと一緒に、あなたのテストのフォルダを続ける場合は、もう一度として完全な構造を模倣する必要はありませんテストはそれぞれのプロジェクトで適切です。

サイドノート

それはあなたが**\*tests.unit*.dll

のようなワイルドカード検索でテストを実行できるようにビルドスクリプトでユニットテストを実行するのに役立つことができます一貫Tests.Unitを持つプロジェクト名を持つことにより、終わりには、プロジェクトの構造は非常に主観的なので、あなたの環境に合った意味を持ち、チームにとって理にかなっています。

+0

これは私が提案した他の方法(プロジェクトのテストを続ける)でした。私は上記のあなたの例では、 "テスト"フォルダの下に対応するHardwareServices1.Core.Tests.Unit.projとHardwareServices1.Core.Tests.Integration.projがあると思いますか? – geoffmazeroff

+0

これらのホスト/サービスプロジェクトにUnit/Integrationテストが必要な場合は、正しくなります。ありがとう、@マーク。 –

+0

私は、チームが解決策のどこにいるかに非常に精通しているので、コード自体でテストを保つことで、見つけやすくなりました。 – geoffmazeroff

関連する問題