如何在 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 或空,则测试将失败,否则它将按预期通过。
我正在使用 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 或空,则测试将失败,否则它将按预期通过。