如何在 Xunit 中编写用于收集的 Assert 语句?

How to write an Assert statement for collection in Xunit?

我正在使用 xUnit 测试框架编写一些单元测试。下面是一个代码片段,用于测试 azColumns 集合是否为空。但是,我在想是否有更好的方法来断言 azColumns 集合而不在 if..else 块语句中使用两个 Assert

也许一行 Assert 语句有意义?

private static string LoadJsonFile()
{
    const string fileName = "templateFileContent_1.json";
    var filePath = Path.Combine(Directory.GetCurrentDirectory(), $@"Data\{fileName}");

    return !File.Exists(filePath) ? string.Empty : filePath;
}

private static string GetJsonData()
{
    JObject jsonObject;
    var jsonFile = LoadJsonFile();

    if (string.IsNullOrEmpty(jsonFile)) return string.Empty;

    using (var reader = new StreamReader(jsonFile))
    {
        var jsonData = reader.ReadToEnd();
        jsonObject = JObject.Parse(jsonData);
    }

    return jsonObject.ToString();
}

private static JObject GetBaseConfigurationObject()
{
    var json = GetJsonData();

    if (string.IsNullOrEmpty(json)) return null;

    var baseObject = JsonConvert.DeserializeObject<JObject>(json);
    return baseObject;
}

[Fact]
public void ExportColumns_Should_Not_Be_Empty_Or_Null()
{
    // Arrange
    IEnumerable<az_Columns> azColumns = null;

    // Act
    var baseConfig = GetBaseConfigurationObject();
    var fileContent = baseConfig?["templateFileContent"];

    if (fileContent != null)
    {
        var baseConfiguration = fileContent.ToObject<BaseConfiguration>();
        azColumns = baseConfiguration?.ExportData?.az_Columns;
    }

    // Assert
    if (azColumns == null)
    {
        Assert.Null(azColumns);
    }
    else
    {
        Assert.NotEmpty(azColumns);
    }
}

非常感谢任何意见。

如果有兴趣使用Fluent Assertions你可以断言如下

[Fact]
public void ExportColumns_Should_Not_Be_Empty_Or_Null() {
    //Arrange
    //...omitted for brevity

    //Act
    //..omitted for brevity

    //Assert
    azColumns.Should().NotBeNullOrEmpty();
}

完成测试后,您断言该集合不应为 null 或为空。如果它为 null 或空,则测试将失败,否则它将按预期通过。