Dej*_*jan 9 c# nunit .net-core dotnet-cli
我有一个项目有一个
[TestFixture, Category("Oracle")]
Run Code Online (Sandbox Code Playgroud)
和a
[TestFixture, Category("OracleOdbc")]
Run Code Online (Sandbox Code Playgroud)
一对夫妇的测试,我想执行分开使用dotnet test
.
这是我在一些谷歌搜索后尝试的:
dotnet test MyProject.csproj --where "cat==Oracle"
但是这个开关不再存在了.dotnet test MyProject.csproj --filter Category="Oracle"
产生0适用的测试:No test is available in ...
.然后,我偶然发现了这篇文章,虽然它描述了MSTest(和NUnit有CategoryAttribute
而不是a 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" />
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我不知道这是否重要,但我的测试项目是多目标netcoreapp2.0
和net462
.
这可能不是很有帮助,但是似乎对我来说是正确的。我使用dotnet-cli创建了项目。
首先,我从这里安装了NUnit3测试适配器说明。这仅需要在每台计算机上运行一次,因此如果您已经在运行它,则无需再次执行此操作。
dotnet new -i NUnit3.DotNetNew.Template
Run Code Online (Sandbox Code Playgroud)
然后,我创建了解决方案,创建了测试项目,并将测试项目添加到了解决方案中。
dotnet new sln -n Solution
dotnet new nunit -n TestProject -o tests\TestProject
dotnet sln add tests\TestProject\TestProject.csproj
Run Code Online (Sandbox Code Playgroud)
然后,我更新了UnitTest1.cs以包括两个测试装置,一个具有类别Oracle
,一个具有类别OracleOdbc
。
using NUnit.Framework;
namespace Tests
{
[TestFixture]
[Category("Oracle")]
public class OracleTests
{
[Test]
public void OracleTest()
{
Assert.Fail();
}
}
[TestFixture]
[Category("OracleOdbc")]
public class OracleOdbcTests
{
[Test]
public void OracleOdbcTest()
{
Assert.Fail();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以指定选择运行的类别。
dotnet test tests/TestProject/TestProject.csproj --filter TestCategory="Oracle"
Run Code Online (Sandbox Code Playgroud)
要么
dotnet test tests/TestProject/TestProject.csproj --filter TestCategory="OracleOdbc"
Run Code Online (Sandbox Code Playgroud)
两者都只运行一个测试,并且消息显示它是正确的测试,但失败了。
使用DotNet-Cli版本2.1.4和NUnit3TestAdapter版本3.9.0
归档时间: |
|
查看次数: |
2254 次 |
最近记录: |