有没有办法使用已经在内存中的数据来驱动单元测试?

Pau*_*nto 9 c# mstest data-driven-tests visual-studio-2010

我知道我可以使用文件中的数据来驱动单元测试,例如csv或xml文件中的数据.

例如:

[TestMethod]
[DataSource(
    "Microsoft.VisualStudio.TestTools.DataSource.CSV", 
    "Data.csv", 
    "Data#csv", 
    DataAccessMethod.Sequential)]
public void TestData() {}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法,而不是使用文件,我可以使用已经在内存中的数据结构来驱动测试.

就像是:

// this structure has the data to use in the unit test
var DataList = new List<string>();

[TestMethod]
[DataSource(
    "Microsoft.VisualStudio.TestTools.DataSource.IEnumerable",
    "DataList", 
    "DataList", 
    DataAccessMethod.Sequential)]
public void TestData() {}
Run Code Online (Sandbox Code Playgroud)

Sal*_*iti 1

一个简单的解决方案可以是这样......

private void TestData(IEnumerable what ) { ... your test method ... }

[TestMethod]
public void TestDataInMemory() { List<T> mylist = ...; this.TestData(mylist); }

[TestMethod]
[DataSource(
    "Microsoft.VisualStudio.TestTools.DataSource.CSV", 
    "Data.csv", 
    "Data#csv", 
    DataAccessMethod.Sequential)]
public void TestData() { this.TestData(testContextInstance ...) }
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以使用测试方法来处理从文件加载的数据和从内存加载的数据。