我们有一个大型的.NET解决方案,现在它包含.NET核心+ .NET Framework + .NET标准项目+测试项目的组合。都使用NUnit。
我正在尝试配置CI管道(TeamCity)以运行解决方案中的所有测试(.NET Framework 4.7.2 + .NET Core 2.0项目的组合)。
我们目前在TeamCity中有一个步骤,使用NUnit控制台运行程序来运行所有符合条件的测试:
**\Release*.Tests.dll
我试图通过添加另一个通配符来包括.NET Core项目:
**\Release\netcoreapp2.0\*.Tests.dll
但是那是行不通的-NUnit控制台运行程序https://github.com/nunit/nunit-console/issues/364不支持.NET核心项目
建议的解决方法是对我的.NET核心项目使用“ dotnet测试”-但这需要存在csproj文件。配置Build的方式,我们仅将编译文件包括在我们的构建工件中(/ Release文件夹中的.dll,.json文件)。
进行更多研究后,我发现您可以使用“ dotnet vstest”来测试二进制文件。
现在运行良好-我们使用NUnit控制台运行4.7.2项目,并使用“ dotnet vstest”运行netcoreapp2.0测试项目。
但是,我想整理更多的过程-我更希望对.NET Framework +核心项目执行一个“测试”步骤。目前,我们还需要手动引用每个特定的netcore2.0测试dll,以在.net核心测试步骤中运行。这意味着每当同事添加新的.net核心测试项目时,他们都必须记住在teamcity中编辑设置。
我认为也许我可以替换NUnit控制台步骤,以对所有测试项目(.NET Framework + .NET Core)使用“ dotnet vstest”。但是,在为.NET Framework测试项目在本地尝试此操作后,出现错误:
No test is available in C:\Users\****\Documents\dev\***\***\src/Agents/Agents.****.Tests/bin/Release/Agents.*****.Tests.dll. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.
我假设也许需要向所有.NET Framework测试项目中添加测试适配器?我们目前有50多个可能会影响的测试项目。
在继续研究之前-我想验证一下这是否是一个好的解决方案。
我假设一旦NUnit控制台运行器支持.NET核心项目,我想转向使用它吗?
测试包含.NET Framework + .NET Core测试项目的企业解决方案的最佳实践是什么?
很抱歉,如果这个问题不属于这里-无法确定是在此处发布,还是在控制台运行程序仓库中发布。