我有一个包含以下项目的 Azure 云服务的 Visual Studio 解决方案:
- 云服务
- 云服务角色
- 测试
该Tests
项目是一个标准的 MSTest 项目,其中包含项目中业务逻辑的单元测试CloudServiceRole
。
代码存储在 Visual Studio Online 中,我已经连接了 Azure 提供的自动化 CI 构建部署。当我签入代码时,我的云服务的暂存部署会自动更新。但是,在 CI 构建期间甚至从未构建过 Tests 项目!当然,这意味着在构建过程中不会运行任何单元测试,因为构建过程的“运行单元测试”部分找不到带有测试的程序集。
我的目标是改变这一点,以便构建测试项目并执行所有单元测试。
查看 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 中的缺陷,尝试禁用此验证会导致生成错误。