次のプロジェクトを含む Azure クラウド サービスを収容する Visual Studio ソリューションがあります。
- クラウドサービス
- CloudServiceRole
- テスト
Tests
プロジェクトは、プロジェクト内のビジネス ロジックの単体テストを含む標準の MSTest プロジェクトですCloudServiceRole
。
コードは Visual Studio Online に保存され、Azure が提供する自動化された CI ビルド デプロイを接続しました。コードをチェックインすると、クラウド サービスのステージング デプロイが自動的に更新されます。ただし、Tests プロジェクトは、CI ビルド中にビルドされることさえありません。もちろん、これは、ビルド プロセスの "単体テストの実行" 部分でテストを含むアセンブリが検出されないため、ビルド中に単体テストが実行されないことを意味します。
私の目標は、これを変更して、テスト プロジェクトがビルドされ、すべての単体テストが実行されるようにすることです。
CI 展開プロセスが使用する MSBuild 引数を見ると、CloudService:Publish
ターゲットのみが実行されているように見えます。プロジェクトはCloudService
プロジェクトに依存しないTests
ため、MSBuild は後者をビルドすることさえありません。
私が試したこと
CloudService->Tests
クラウド サービス ロール プロジェクトではないプロジェクトに依存関係を追加すると、ビルド中にエラーが発生し ( The item "C:\a\src\MyProject\Tests\Tests.csproj" in item list "ProjectReferenceWithConfiguration" does not define a value for metadata "Name".
)、依存関係を追加できないため、依存関係を手動で追加できませんCloudServiceRole->Tests
。循環依存関係が発生するためです。
パラメータを手動で追加して完全なソリューションをビルドするように MSBuild に指示する/t:Build
と、さらに別のエラーが発生しました。C:\a\bin\ServiceDefinition.csdef: Need to specify the physical directory for the virtual path 'Web/' of role Web.
Tests
プロジェクトを別のビルド ターゲットとしてソリューションと共に追加すると、テストがビルドされます。ただし、同時に、継続的配置機能が無効になります。More than one solution found. Continuous Deployment skipped.
プロジェクトを参照しているがインスタンスが構成されていない偽のクラウド サービス ロール プロジェクトを作成しようとするとTests
、ビルド エラーが発生します: WAT100: The following roles 'Tests.FakeRole' have an instance count of 0. Instance count of 0 is not supported in deployments to Microsoft Azure
。この検証を無効にしようとすると、Azure SDK の欠陥が原因でビルド エラーが発生します。