好的-这篇文章可以帮助我弄清楚无需手动向.testsettings
文件添加项目就可以做什么。
步骤1-启用MS测试DeploymentItem
属性。
首先,我们需要打开/启用该DeploymentItem
属性。
转到测试->编辑测试设置->当前活动设置..例如:::本地(local.testsettings)
现在转到DEPLOYMENT,并确保Enable Enable被选中为ON。(默认情况下,它是关闭的)。
第2步-检查文件的属性
现在,我们需要确保要在单元测试中使用的文件已设置为在编译时复制到BIN目录。MS测试单元测试中只能使用BIN目录中的文件。为什么?因为每次运行MS测试,它都必须复制源...,这意味着它要复制当前BIN目录文件(对于当前配置)。
例如,...当前配置是“调试”(与“发布”相对)。
然后添加我的文件...(注意项目中的文件夹结构)...
然后确保在编译项目时始终将此文件复制到bin目录中。
专业提示:“始终复制”也可以使用,但是始终将源文件复制到目标文件上,即使它们相同。这就是为什么我更喜欢“如果较新则复制...”但无论如何浮动
好的,女士们和男士们-还和我在一起吗?Wikid。
当我们编译时,该文件现在应该存在于Bin目录中。
步骤3-现在使用DeploymentItem属性
好的,现在我们终于可以DeploymentItem
在代码中使用该属性了。当我们这样做时,这告诉MSTest将文件(从相对于bin目录的位置)复制到新的MS Test目录中。
[TestMethod]
[DeploymentItem(@"Test Data\100LogEntries.txt", "Test Data")]
public void Parsing100LogFileEntriesReturnsANewParsedLogEntriesWith100Items()
{
// Arrange.
const string fileName = @"Test Data\100LogEntries.txt";
ILogEntryService logEntryService = new PunkBusterLogEntryService();
// Act.
var parsedLogEntries = logEntryService.ParseLogFile(fileName, 0);
// Assert.
Assert.IsNotNull(parsedLogEntries);
Assert.AreEqual(100, parsedLogEntries.LogEntries.Count);
// Snipped the remaining asserts to cut back on wasting your time.
}
因此,让我们分解一下。
[TestMethod]
我们都知道那是什么。
[DeploymentItem(@"Test Data\100LogEntries.txt", "Test Data")]
从bin目录开始,进入该Test Data
文件夹,然后将文件复制100LogEntries.txt
到目标文件夹Test Data
,即根目录MS Test输出目录,该目录是运行每个测试时MS Test创建的。
这就是我的输出文件夹结构。(打扰一下...)
和瞧!我们有编程方式的部署文件。
专业提示#2-如果您在DeploymentItem
属性中未使用第二个字符串参数,则文件将被复制到当前MS测试的根OUT文件夹中。
const string fileName = @"Test Data\100LogEntries.txt";
现在,文件的路径相OUT
对于当前MS测试的文件夹。因此,我明确地说要将该文件部署到一个名为Test Data
...的目录中,因此当我想读取该文件时,需要确保在我的代码中正确引用了该文件。
只是为了确认->将该文件名的完整路径翻译C:\lots of blah blah blah\My Solution\TestResults\PureKrome_PUREKROME-PC 2011-01-05 23_41_23\Out\Test Data
为当前MS测试的..之类的内容。
HTH。
现在有一张独角兽的照片,供阅读:)