我在解决在项目中引用自定义文本文件的问题时遇到了一些麻烦。注意:该文件包含文本,但其自定义类型为“.rit”
我目前正在为新应用程序构建和运行一些测试用例,其中一个涉及读取驻留在我的项目的示例文件夹中的文件,名为“TestFiles”。起初,我使用文件的绝对路径在本地运行测试,它运行没有问题。但是,我正在使用TFS来检查我的代码,一旦测试在服务器中运行,它就会立即失败,因为它无法找到文件,这很明显,因为我使用的是本地驱动器中文件的绝对路径,所以我需要更改测试访问此文件的方式,使其在本地和服务器上都能正常工作。
我看了一些例子,因为我正在寻求帮助,但似乎没有工作......我试过了:
DeploymentItem:
[DeploymentItem(@"TestProject\TestFiles\test file.rit", "TestData")]
[TestMethod]
public void LoadFileTest()
{
//Assert.IsTrue(File.Exists("test file.rit"));
var obj = new obj();
var tstFile = @"TestData\\test file.rit";
var file = new StreamReader(tstFile);
obj.OpenRitFileInTextFormat(file);
}
文件的层次结构是:Solution \ TestProject \ TestFiles \ test file.rit,我确保将Copy to Output设置为“始终复制”
将其添加为资源:
//[DeploymentItem(@"TestProject\\TestFiles\\test file.rit", "TestData")]
[TestMethod]
public void LoadFileTest()
{
//Assert.IsTrue(File.Exists("test file.rit"));
var obj = new obj();
var tstFile = Properties.Resources.test_file;
//this one throws an error however because it says the type of tstFile is now
//a byte[] instead of a stream reader
*var file = new StreamReader(tstFile);*
obj.OpenRitFileInTextFormat(file);
}
我在这个方面不是很有经验,所以我可能做错了什么......如果有人可以请我启发或给我一些指导,我可以寻求帮助,我会非常感激!
谢谢,
编辑:我发现我的TestData文件夹我指定在DeploymentItem路径中复制没有创建/复制到测试运行的Out文件夹。我开始认为这更像是设置文件问题,这是我的设置文件的内容:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Configurations that affect the Test Framework -->
<RunConfiguration>
<!-- Path relative to solution directory -->
<ResultsDirectory>.\TestResults</ResultsDirectory>
<!-- [x86] | x64
- You can also change it from menu Test, Test Settings, Default Processor Architecture -->
<TargetPlatform>x86</TargetPlatform>
<!-- Framework35 | [Framework40] | Framework45 -->
<TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
</RunConfiguration>
<!-- Configurations for data collectors -->
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Configuration>
<CodeCoverage>
<ModulePaths>
<Exclude>
<ModulePath>.*CPPUnitTestFramework.*</ModulePath>
</Exclude>
</ModulePaths>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
<!-- Adapter Specific sections -->
<!-- MSTest adapter -->
<MSTest>
<MapInconclusiveToFailed>True</MapInconclusiveToFailed>
<CaptureTraceOutput>false</CaptureTraceOutput>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
<DeploymentEnabled>True</DeploymentEnabled>
</MSTest>
</RunSettings>
答案 0 :(得分:2)
使用@
修饰符时,不应该逃避反斜杠。因此,请使用[DeploymentItem("TestProject\\TestFiles\\test file.rit", "TestData")]
或[DeploymentItem(@"TestProject\TestFiles\test file.rit", "TestData")]
。第二个版本更可取。
根据我的经验,如果文件在根级别添加到项目中,那么在测试用例中只能由[DeploymentItem("file.xyz")]
引用它。所以在你的情况下[DeploymentItem(@"TestFiles\test file.rit", "TestData")]
应该没问题。
您还需要记住“解决方案项目”中的“启用部署” - &gt; Local.testsettings: