2014-01-09 72 views
6

我已经搜索了这个主题,没有找到任何好信息一步一步做,所以我研究了它并在这里分享。这是一个简单的解决方案。如何以编程方式生成一个trx文件?

+0

完全可以在这里回答你自己的问题(甚至接受你自己的答案),但请尊重标准的问题答案格式,即上面的问题,并在下面的回答块中提出答案。 – fvu

+0

感谢提醒。有了一个新帐户,我无法在8小时内回答自己的问题。稍后会回来修复它。 – kongkongt

+0

您可以将生成的TestResults文件的示例添加到此问题吗? –

回答

6

查找您的VisualStudio安装vstst.xsd文件,使用XSD.EXE生成一个.cs文件:

XSD.EXE /班vstst.xsd

所得vstst.cs文件包含所有定义trx文件中每个字段/元素的类。

你可以使用这个链接来学习一些领域的TRX文件:http://blogs.msdn.com/b/dhopton/archive/2008/06/12/helpful-internals-of-trx-and-vsmdi-files.aspx

你也可以使用从MSTEST运行生成的现有TRX文件的学习领域。

用vstst.cs和你的trx文件知识,你可以编写如下的代码来生成一个trx文件。

TestRunType testRun = new TestRunType(); 
ResultsType results = new ResultsType(); 
List<UnitTestResultType> unitResults = new List<UnitTestResultType>(); 
var unitTestResult = new UnitTestResultType(); 
unitTestResult.outcome = "passed"; 
unitResults.Add(unitTestResult); 

unitTestResult = new UnitTestResultType(); 
unitTestResult.outcome = "failed"; 
unitResults.Add(unitTestResult); 

results.Items = unitResults.ToArray(); 
results.ItemsElementName = new ItemsChoiceType3[2]; 
results.ItemsElementName[0] = ItemsChoiceType3.UnitTestResult; 
results.ItemsElementName[1] = ItemsChoiceType3.UnitTestResult; 

List<ResultsType> resultsList = new List<ResultsType>(); 
resultsList.Add(results); 
testRun.Items = resultsList.ToArray(); 

XmlSerializer x = new XmlSerializer(testRun.GetType()); 
x.Serialize(Console.Out, testRun); 

注意,你可能会出现InvalidOperationException由于一些继承问题上的“项目”领域,如GenericTestType和PlainTextManualTestType(均来自BaseTestType得出)。应该有一个通过Google搜索的解决方案。基本上把所有的“Items”定义放到BaseTestType中。这里是链接:TestRunType的序列化抛出异常

为了使trx文件能够在VS中打开,有一些你需要放入的字段,包括TestLists,TestEntries,TestDefinitions和结果。你需要链接一些guid。通过查看现有的trx文件,不难发现。

祝你好运!

相关问题