提问人:Harald Nordgren 提问时间:10/23/2023 最后编辑:Harald Nordgren 更新时间:10/31/2023 访问量:144
Roslyn -- 如何在NamingStylesTests.cs中运行测试?
Roslyn -- How to run tests in NamingStylesTests.cs?
问:
我正在尝试解决 Roslyn (https://github.com/dotnet/roslyn) 中的问题,但我在运行某些单元测试时遇到问题。我在带有 M2 芯片的 macOS Ventura 上。
运行
./build.sh --test
它运行测试套件,但看起来不是这样,例如,这个测试根本运行:
TestCamelCaseLocalsUpperCaseConstants_ConstLocal
有问题的文件是
src/Analyzers/CSharp/Tests/NamingStyles/NamingStylesTests.cs
有人可以帮我吗?
答:
您应该能够“”包含测试的程序集。
dotnet test
若要扩展注释,应该可以通过首先标识包含测试的程序集,然后使用命令运行测试来执行特定测试。dotnet test
[macOS Ventura with M2 chip] ---(build Roslyn)---> [Compiled Roslyn Project]
|
(dotnet test on specific assembly)
|
+--> [Specific Test Assembly]
|
+--> [TestCamelCaseLocalsUpperCaseConstants_ConstLocal]
生成 Roslyn 项目。
cd path/to/roslyn
./build.sh
然后标识包含 .通常,程序集是测试项目的名称,在这种情况下,可以是类似 .但是,这可能会有所不同,您可能需要检查项目配置或生成输出,以查找程序集的确切名称和位置。NamingStylesTests.cs
Microsoft.CodeAnalysis.CSharp.UnitTests.dll
确定程序集后,使用指定程序集和选项的命令运行所需的测试。
请参阅“运行选定的单元测试dotnet test
--filter
"
dotnet test path/to/Microsoft.CodeAnalysis.CSharp.UnitTests.dll --filter FullyQualifiedName~Microsoft.CodeAnalysis.CSharp.UnitTests.NamingStylesTests.TestCamelCaseLocalsUpperCaseConstants_ConstLocal
跟:
path/to/Microsoft.CodeAnalysis.CSharp.UnitTests.dll
包含测试的程序集的路径。--filter
选项,用于指定要运行的测试的完全限定名称。
我需要一些帮助才能真正找到程序集。
这是我的测试文件的完整路径:.
似乎没有任何实际包含“”或“之类的词。src/Analyzers/CSharp/Tests/NamingStyles/NamingStylesTests.cs
.dll
./build.sh
Analyzers
NamingStyles
测试项目的项目文件 () 应指示输出程序集名称。导航到包含 的目录,然后查找文件。打开文件并检查元素。*.csproj
NamingStylesTests.cs
.csproj
<AssemblyName>
cd src/Analyzers/CSharp/Tests/NamingStyles
cat NamingStylesTests.csproj | grep AssemblyName
检查生成输出(在屏幕上和任何日志文件中)中是否有指示程序集生成位置的消息。
./build.sh | grep -i "NamingStylesTests"
在生成项目目录中搜索程序集。它可能位于 or 目录中,也可能位于 or 子目录下。bin
out
Debug
Release
find . -name '*NamingStylesTests*.dll'
生成配置也可能影响程序集生成。确保生成配置包含项目,并配置为生成程序集。NamingStylesTests
cat Build/Targets/Settings.props | grep -i "NamingStylesTests"
评论
src/Analyzers/CSharp/Tests/NamingStyles/NamingStylesTests.cs
./build.sh
eng/targets/Settings.props
NamingStyle*.dll
find . -name 'CSharpAnalyzers.UnitTests.dll'
层(即目录)是 CodeStyle 和 Features 之间的共享层。这是因为分析器以两种不同的方式交付:Analyzers
src/Analyzers
- 直接使用 IDE(这来自功能层)
- 使用 CodeStyle NuGet 包(这来自 CodeStyle 层)
因此,测试遵循相同的产品结构。有问题的测试包含在两个测试程序集中:
Microsoft.CodeAnalysis.CSharp.CodeStyle.UnitTests
Microsoft.CodeAnalysis.CSharp.Features.UnitTests
所以,你可以去跑path\to\Roslyn\src\CodeStyle\CSharp\Tests
dotnet test --filter "FullyQualifiedName~NamingStylesTests"
为了阐明这些测试在没有任何 csproj 时是如何编译的,这个想法是包含所谓的“共享项目”,请参阅 CSharpAnalyzers.UnitTests.shproj 和 CSharpAnalyzers.UnitTests.projitems。src\Analyzers
src\Analyzers
然后,共享项目包含在 Microsoft.CodeAnalysis.CSharp.Features.UnitTests 和 Microsoft.CodeAnalysis.CSharp.CodeStyle.UnitTests 中。
评论
dotnet test --filter "FullyQualifiedName~NamingStylesTests.TestPascalCaseMethod_ConstructorsAreIgnored"
System.AggregateException : One or more errors occurred. (An exception was thrown while initializing part "Microsoft.CodeAnalysis.Test.Utilities.TestExportJoinableTaskContext".) (An exception was thrown while initializing part "Microsoft.CodeAnalysis.Test.Utilities.TestExportJoinableTaskContext".)
评论