Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 扩展Microsoft.VisualStudio.TestTools.DataSource.XML_C#_Xml_Datasource_Data Driven Tests - Fatal编程技术网

C# 扩展Microsoft.VisualStudio.TestTools.DataSource.XML

C# 扩展Microsoft.VisualStudio.TestTools.DataSource.XML,c#,xml,datasource,data-driven-tests,C#,Xml,Datasource,Data Driven Tests,我正在使用C#VS2008中的Xml数据源编写数据驱动的单元测试 属性看起来像这样,一切都运行得非常好 [DeploymentItem("HtmlSchemaUrls.xml")] [DataSource("DataSource", "Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\HtmlSchemaUrls.xml", Microsoft.VisualStudio.TestTools.We

我正在使用C#VS2008中的Xml数据源编写数据驱动的单元测试

属性看起来像这样,一切都运行得非常好

    [DeploymentItem("HtmlSchemaUrls.xml")]
    [DataSource("DataSource", "Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\HtmlSchemaUrls.xml", Microsoft.VisualStudio.TestTools.WebTesting.DataBindingAccessMethod.Sequential, "URL")]
    [DataBinding("DataSource", "URL", "URL_Text", "DataSource.URL.URL_Text")]
    [TestMethod]
我想扩展Microsoft.VisualStudio.TestTools.DataSource.XML数据源的功能,最好通过App.config进行配置。例如,布尔值为true时,我遍历Xml文件中的所有行;为false时,我只遍历一行

我不想在测试用例本身中执行此检查-我有1000个符合此要求的测试用例


任何关于如何实现这一点的指导都将不胜感激。

使用AssemblyInitialize从某个测试集存储库复制XML测试集。
1-这样,您就不需要[DeploymentItem(“HtmlSchemaUrls.xml”)]
2-不只是复制它,而是创建一个包含需要测试的记录的新文件(使用参数化xsl?)
3-该操作的所有参数都可以存储在app.config中

缩短的示例(使用简单副本准备数据驱动的测试用例env:

[AssemblyInitialize()]
public static void AssemblyInit(TestContext context)
{
  ...
  string strRelocatedTestCaseFile =
    Path.Combine(TheToolBox.ShortPath(AppDomain.CurrentDomain.BaseDirectory),                                                                        
                 "TestCase.xml");
  if(!string.IsNullOrEmpty(strTestCaseFile)) 
  {
    string strMessage = "Copying TestCase input file: '" + 
                        strTestCaseFile + "' to '" + strRelocatedTestCaseFile + "'";
    Console.WriteLine(strMessage);
    File.Copy(strTestCaseFile, strRelocatedTestCaseFile, true);
  }
}

如果有1000个测试击中了文件系统,那么似乎有些问题(老实说,此时您正在进行集成测试,而不是单元测试)您可能需要考虑做一些嘲弄或敲碎,以隔离那些只需要一行XML的情况下正在测试的代码。这是一个好主意,但是由于代码“>数据源< /COD>在汇编初始化之前甚至会运行,所以绑定了测试。数据源文件的版本。