IEnumerable<T> 作为数据驱动测试的数据源
IEnumerable<T> as a DataSource for a data driven test
是否可以在 .Net 中创建使用 IEnumerable<T>
作为 DataSource
的数据驱动测试?
问题是:
有一个 class 我想测试。它的行为略有不同,具体取决于它作为构造函数参数接收的 int
值。
并且有一个静态方法 returns IEnumerable<int>
该构造函数参数的所有可能值。
已找到解决办法。不是很满意,但是很管用。
[DataSourceGenerator("source.csv")]
public class DataDrivenTests
{
public TestContext TestContext { get; set; }
[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "source.csv", "source#csv", DataAccessMethod.Sequential)]
//The source is generated automatically by DataSourceGenerator attribute
public void DataDrivenTest()
{
//Here you can implement a data driven test of your own
}
}
[AttributeUsage(AttributeTargets.Class)]
internal sealed class DataSourceGeneratorAttribute : Attribute
{
public DataSourceGeneratorAttribute(string fileName)
{
var csvContent = GenerateCsvContent();
File.WriteAllText(fileName, csvContent);
}
private string GenerateCsvContent()
{
//Here you can generate content for your csv
}
}
是否可以在 .Net 中创建使用 IEnumerable<T>
作为 DataSource
的数据驱动测试?
问题是:
有一个 class 我想测试。它的行为略有不同,具体取决于它作为构造函数参数接收的 int
值。
并且有一个静态方法 returns IEnumerable<int>
该构造函数参数的所有可能值。
已找到解决办法。不是很满意,但是很管用。
[DataSourceGenerator("source.csv")]
public class DataDrivenTests
{
public TestContext TestContext { get; set; }
[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "source.csv", "source#csv", DataAccessMethod.Sequential)]
//The source is generated automatically by DataSourceGenerator attribute
public void DataDrivenTest()
{
//Here you can implement a data driven test of your own
}
}
[AttributeUsage(AttributeTargets.Class)]
internal sealed class DataSourceGeneratorAttribute : Attribute
{
public DataSourceGeneratorAttribute(string fileName)
{
var csvContent = GenerateCsvContent();
File.WriteAllText(fileName, csvContent);
}
private string GenerateCsvContent()
{
//Here you can generate content for your csv
}
}