我正尝试在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
代替,即使没有过滤器,我也收到了同样的错误。
如有任何指导,不胜感激。
1条答案
按热度按时间bejyjqdl1#
我发现我用错了DLL文件夹,当你传递
--framework
选项时,它只是指定了框架的类型,它必须从runtimeconfig.json文件中获取要使用的实际框架,这个文件是在构建时生成的。下面是一些相关信息。https://learn.microsoft.com/en-us/dotnet/core/runtime-config/#runtimeconfigjson
这个文件在obj目录中不存在,它在bin目录中,所以我需要在bin目录中查找我的项目,然后执行命令,它工作了。
--verbosity
开关可以被移除,以将更少的垃圾推到控制台上。https://learn.microsoft.com/en-ca/dotnet/core/tools/dotnet-test?tabs=netcore2x