NUnit 3 控制台运行程序无法断言集合已排序

本文关键字:断言 集合 排序 控制台 运行 程序 NUnit | 更新日期: 2023-09-27 18:34:43

我正在使用Travis CI运行CI构建。我正在通过nunit3-console.exe运行 NUnit 测试。 我有几个测试试图断言集合已订购:

[Test]
public void FeatsAreSorted()
{
    var result = controller.Generate() as JsonResult;
    dynamic data = result.Data;
    Assert.That(data.character.Ability.Feats, Is.Ordered.By("Name"));
}

当我在Visual Studio中运行此测试时,测试通过正常。 但是,当我通过 Travis CI 中的nunit3-console.exe运行测试时,出现以下错误:

1) Error : DNDGenSite.Tests.Unit.Controllers.CharacterControllerTests.GenerateSortsCharacterFeats
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException : `NUnit.Framework.Assert.That<System.Linq.OrderedEnumerable<CharacterGen.Common.Abilities.Feats.Feat,string>>(System.Linq.OrderedEnumerable<CharacterGen.Common.Abilities.Feats.Feat,string>, NUnit.Framework.Constraints.IResolveConstraint)' is inaccessible due to its protection level

这是我.travis.yml

language: csharp
solution: DNDGenSite.sln
install:
  - nuget restore DNDGenSite.sln
  - nuget install NUnit.Runners -OutputDirectory testrunner
  - nuget install Chutzpah -OutputDirectory testrunner
script:
  - xbuild DNDGenSite.sln /p:TargetFrameworkVersion="v4.5.1" /p:Configuration=Release
  - mono ./testrunner/NUnit.Console.*/tools/nunit3-console.exe ./Tests/bin/Release/DNDGenSite.Tests.dll
  - mono ./testrunner/Chutzpah.*/tools/chutzpah.console.exe ./Tests/Unit/Scripts

有什么想法吗?

更新:如果我在 git bash 中运行测试,则在 DebugRelease构建模式下,一切都会正确通过。 因此,Travis CI 构建控制台运行器的环境有所不同。

NUnit 3 控制台运行程序无法断言集合已排序

最后,我发现断言dynamic对象的顺序导致了 Travis 中的错误。 相反,如果我验证它等于不同的对象并检查 tat 对象的属性,则测试通过正常。