jenkins 使用dotnet测试通过nunit控制台运行程序运行.Net7.0测试时,显示“无测试可用”

fae0ux8s  于 2022-12-17  发布在  Jenkins
关注(0)|答案(1)|浏览(195)

我正尝试在Jenkins中运行使用.Net 7构建的NUnit测试。它们在我的Visual Studio中本地运行得非常好。自从从.net framework 4.X升级到.Net 7.0后,我无法让它们在运行Jenkins Agent的Windows计算机上运行。
我把Jenkins从图片中删除,并试图直接用dotnet test调用测试,但没有成功。
我安装了32位和64位版本的.Net 7.0 framework。Dotnet test被识别为一个命令。在命令中指定framework似乎没有什么区别。指定x86作为体系结构会使它完全失败,即使我专门指向x86版本的framework。dotnet test指向的是64位版本。
我运行测试的命令:c:\Jenkins\workspace\Automation_Solution_Build\Project\obj\Debug\net7.0>dotnet test TestDll.dll /TestAdapterPath:C:\Users\username\.nuget\packages\nunit.consolerunner\3.16.0\tools\nunit-console.exe --framework:net7.0 --filter:TestCategory=TestCategory
这将导致以下消息:

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
No test is available in c:\Jenkins\workspace\Automation_Solution_Build\Project\obj\Debug\net7.0\TestDll.dll. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.

我完全删除了过滤器,只是为了确保它不会因为某些原因而无法通过分类,但它仍然不工作。它似乎看不到dll中的测试。
然后,我尝试使用dotnet vstest代替,即使没有过滤器,我也收到了同样的错误。
如有任何指导,不胜感激。

bejyjqdl

bejyjqdl1#

我发现我用错了DLL文件夹,当你传递--framework选项时,它只是指定了框架的类型,它必须从runtimeconfig.json文件中获取要使用的实际框架,这个文件是在构建时生成的。
下面是一些相关信息。https://learn.microsoft.com/en-us/dotnet/core/runtime-config/#runtimeconfigjson
这个文件在obj目录中不存在,它在bin目录中,所以我需要在bin目录中查找我的项目,然后执行命令,它工作了。

C:\Jenkins\workspace\Automation_Solution_Build\Project\bin\Debug\net7.0>dotnet test TestDll.dll --verbosity:diag --framework: net7.0 --filter:TestCategory=TestCategory

--verbosity开关可以被移除,以将更少的垃圾推到控制台上。
https://learn.microsoft.com/en-ca/dotnet/core/tools/dotnet-test?tabs=netcore2x

相关问题