如何在 Xunit 中为集合编写 Assert 语句?

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


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);

    }

}

非常感谢任何输入。


呼啦一阵风
浏览 160回答 1
1回答

万千封印

如果对使用Fluent Assertions感兴趣,您可以断言如下[Fact]public void ExportColumns_Should_Not_Be_Empty_Or_Null() {&nbsp; &nbsp; //Arrange&nbsp; &nbsp; //...omitted for brevity&nbsp; &nbsp; //Act&nbsp; &nbsp; //..omitted for brevity&nbsp; &nbsp; //Assert&nbsp; &nbsp; azColumns.Should().NotBeNullOrEmpty();}执行测试后,您断言该集合不应为空或为空。如果它为 null 或为空,则测试将失败,否则它将按预期通过。
打开App,查看更多内容
随时随地看视频慕课网APP