mstest.exe通过命令行执行* .vsmdi
我有一个C#项目的Visual Studio解决方案。目前,我的解决方案中没有测试项目。所以我没有文件* .vsmdi。mstest.exe通过命令行执行* .vsmdi
我想通过命令行测试我的项目。
MSTest.exe /testmetadata:*.vsmdi /resultsfile:Logfile.log
是否有可能不增加项目,以创建.vsmdi?如果可能的话,如何?
要在命令行中执行,* .vsmdi文件必须存在于解决方案中?
如果我必须使用IDE进行测试,我应该在测试项目中有* .vsmdi文件?
* .vsmdi文件的唯一用途是列出测试用例吗?
1)从技术上讲,可以创建一个.vsmdi文件,而无需将您的测试项目添加到您的解决方案。由于VSMDI文件的内容是XML,所以您可以手动编写它们,或者使用基于组装中测试的工具生成它们。但是,当测试项目未包含在解决方案中时,VSMDI文件不太有用,因为VSMDI文件的威力在管理您的测试。但是你仍然可以使用它们(参见问题2的答案)。
如果您想手工编写vsmdi文件,您需要使用SHA1对FQN进行散列,并创建如下所示的哈希的前128位的Guid(来自Dominic Hopton的代码)。查看他的博客文章的更多信息:Helpful Internals of TRX (and VSMDI files)。
private static HashAlgorithm s_provider = new SHA1CryptoServiceProvider();
internal static HashAlgorithm Provider
{
get { return s_provider; }
}
/// Calculates a hash of the string and copies the first 128 bits of the hash
/// to a new Guid.
///
internal static Guid GuidFromString(string data)
{
byte[] hash = Provider.ComputeHash(
System.Text.Encoding.Unicode.GetBytes(data));
byte[] toGuid = new byte[16];
Array.Copy(hash, toGuid, 16);
return new Guid(toGuid);
}
2)否,vsmdi文件不需要在你的溶液文件夹(或在解决方案),只要是Testlink元件点的含有试验正确装配的存储属性(相对到你的vsmdi文件)。例如:
<TestLink id="0c257cc9-ffed-cd5e-bda1-56df14ad68c2" name="AddOneAndTwo_Test"
storage="TestProject\bin\debug\testproject.dll" />
3)Vsmdi文件存在于解决方案级而不是在项目级。如果您有多个测试项目,则可以使用一个vsmdi文件来管理所有测试。请注意,当您从Visual Studio运行测试时,存储属性会被忽略,假设您已将解决方案加载到解决方案中
4)使用Vsmdi文件管理解决方案中的测试,并且可以创建多个VSMDI文件中的图层。例如,您想要测试的解决方案中有多个程序集。在根测试列表(称为:测试列表)下,为您的每个项目创建一个测试列表。然后,您可以将其中一个项目的测试列表分为两个或更多单独的测试列表(例如一个用于测试业务逻辑,另一个用于测试错误处理)。当您只想测试项目A的业务逻辑测试时,您可以选择相应的测试列表并在其中运行测试。
约vsmdi文件的额外注:
A)由于的Visual Studio 2012微软决定让VSMDI文件(并与他们的测试列表)已过时。测试列表已被测试类别(已存在于Visual Studio 2010中)和播放列表取代。 测试类别是您可以在单个测试方法上设置的属性,并且可以在构建中使用。播放列表是在Visual Studio 2012 Update 2中引入的,目前在MSBuild中不支持。
有关测试类别的更多信息,请参阅:http://msdn.microsoft.com/en-us/library/dd286595.aspx