使用来自特定路径的文件名作为 xUnit 中的 MemberData。将 `IEnumerable<string>` 转换为 `IEnumerable<object[]>`
Use file names from specific path as MemberData in xUnit. Convert `IEnumerable<string>` to `IEnumerable<object[]>`
我想为特定路径中的所有文件编写单元测试。例如 - 第一个 运行 将用于文件 x,第二个用于文件 y,等等
但是我在将 IEnumerable<string>
转换为 IEnumerable<object[]>
时遇到问题:
public static IEnumerable<object[]> ExpectedOutputFiles;
public JsonParserTests()
{
var files = Directory.EnumerateFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, GetOutputDataFolder()));
ExpectedOutputFiles = files; // <--- Error is here
}
[Theory]
[MemberData(nameof(ExpectedOutputFiles))]
public void OutputFile_ShouldBeParsedCorrectlyAsJSON_RFC8259(string filename)
{
// Test parsing output files with Newtonsoft.Json and System.Text.Json
var json = File.ReadAllText(filename);
JToken.Parse(json);
// System.Text.Json have better default options compatible with RFC 8259 specification
JsonDocument.Parse(json);
}
这可能吗,还是我应该创建 [Fact]
单元测试并在 foreach
循环中读取文件?
将代码从构造函数移至静态成员
public static IEnumerable<object[]> ExpectedOutputFiles() {
var files = Directory.EnumerateFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, GetOutputDataFolder()));
foreach(var file in files) {
yield return new object[] { file };
}
}
//...
和return对象数组中的每个文件
引用xUnit Theory: Working With InlineData, MemberData, ClassData
我想为特定路径中的所有文件编写单元测试。例如 - 第一个 运行 将用于文件 x,第二个用于文件 y,等等
但是我在将 IEnumerable<string>
转换为 IEnumerable<object[]>
时遇到问题:
public static IEnumerable<object[]> ExpectedOutputFiles;
public JsonParserTests()
{
var files = Directory.EnumerateFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, GetOutputDataFolder()));
ExpectedOutputFiles = files; // <--- Error is here
}
[Theory]
[MemberData(nameof(ExpectedOutputFiles))]
public void OutputFile_ShouldBeParsedCorrectlyAsJSON_RFC8259(string filename)
{
// Test parsing output files with Newtonsoft.Json and System.Text.Json
var json = File.ReadAllText(filename);
JToken.Parse(json);
// System.Text.Json have better default options compatible with RFC 8259 specification
JsonDocument.Parse(json);
}
这可能吗,还是我应该创建 [Fact]
单元测试并在 foreach
循环中读取文件?
将代码从构造函数移至静态成员
public static IEnumerable<object[]> ExpectedOutputFiles() {
var files = Directory.EnumerateFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, GetOutputDataFolder()));
foreach(var file in files) {
yield return new object[] { file };
}
}
//...
和return对象数组中的每个文件
引用xUnit Theory: Working With InlineData, MemberData, ClassData