【发布时间】:2018-01-10 20:51:18
【问题描述】:
我有一个项目有一个
[TestFixture, Category("Oracle")]
还有一个
[TestFixture, Category("OracleOdbc")]
有几个测试,我想使用dotnet test单独执行。
这是我在谷歌搜索后尝试的:
-
dotnet test MyProject.csproj --where "cat==Oracle"但是这个开关已经不存在了。 -
dotnet test MyProject.csproj --filter Category="Oracle"产生 0 个适用的测试:No test is available in ...。
然后,我偶然发现了 this article,虽然它描述了 MSTest(并且 NUnit 有 CategoryAttribute 而不是 TestCategoryAttribute),但我已经尝试过
dotnet test MyProject.csproj --filter TestCategory="Oracle"
宾果游戏。这次执行了所有“Oracle”测试。但现在是令人困惑的部分。如果我运行dotnet test MyProject.csproj --filter TestCategory="OracleOdbc",所有 测试正在执行,包括“Oracle”和“OracleOdbc”。这让我想知道TestCategroy 是否是 NUnit 的正确方法,或者这是否是一个错误。
我正在使用 .NET 命令行工具 (2.1.2),项目参考是:
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
<PackageReference Include="NUnit" Version="3.8.1" />
<PackageReference Include="NUnit3TestAdapter" Version="3.9.0" />
<PackageReference Include="TeamCity.VSTest.TestAdapter" Version="1.0.7" />
顺便说一句,我不知道这是否重要,但我的测试项目是多目标 netcoreapp2.0 和 net462。
【问题讨论】:
-
我在这里观察到的一件事是用于类别比较的单 = 符号。我使用 nunit 从命令行运行我的测试,它们看起来像这样:
nunit3-console.exe MyTestProject.dll --where "cat==myCategory" -
@Freya:感谢您的发现。我已经修好了。然而,这个问题是关于
dotnet test。您正在直接启动nunit3-console.exe。
标签: c# .net-core nunit dotnet-cli