如何使用嵌入式资源(文本文件)StreamReader并将其作为字符串返回?我当前的脚本使用Windows窗体和文本框,允许用户查找和替换未嵌入的文本文件中的文本.
private void button1_Click(object sender, EventArgs e)
{
StringCollection strValuesToSearch = new StringCollection();
strValuesToSearch.Add("Apple");
string stringToReplace;
stringToReplace = textBox1.Text;
StreamReader FileReader = new StreamReader(@"C:\MyFile.txt");
string FileContents;
FileContents = FileReader.ReadToEnd();
FileReader.Close();
foreach (string s in strValuesToSearch)
{
if (FileContents.Contains(s))
FileContents = FileContents.Replace(s, stringToReplace);
}
StreamWriter FileWriter = new StreamWriter(@"MyFile.txt");
FileWriter.Write(FileContents);
FileWriter.Close();
}
Run Code Online (Sandbox Code Playgroud) 我需要生成一个扩展名为.csv的唯一临时文件.
我现在做的是
string filename = System.IO.Path.GetTempFileName().Replace(".tmp", ".csv");
Run Code Online (Sandbox Code Playgroud)
但是,这并不能保证我的.csv文件是唯一的.
我知道我遇到碰撞的可能性非常低(特别是如果你认为我没有删除.tmp文件),但这段代码对我来说并不好看.
当然我可以手动生成随机文件名,直到我最终找到一个独特的文件名(这不应该是一个问题),但我很想知道其他人是否找到了一个很好的方法来处理这个问题.
我似乎无法掌握如何配置MSTest部署项.我已经能够通过修改项目的测试设置文件来使它们正常工作,但这不太理想 - 部署项配置与单个测试分开,文件路径似乎存储为绝对路径,除非文件是在解决方案文件夹下.
难道我不应该能够添加使用部署项目[DeploymentItem]上无论是属性[TestClass]还是[TestMethod]无需创建/修改项目的测试设置文件?我该如何做到这一点?
(坦率地说,我不明白是否需要单独的部署项配置 - 为什么不使用现有的"复制到输出目录"设置来处理应该是部署项目的项目文件?)
我MS unit testing framework用来测试我的C#库.我必须打开一个我正在部署的文件DeploymentItem attribute.但它没有将文件部署到Test部署目录.
在我的Unit-test项目中,我TestFile在这个文件夹中创建了一个文件夹,里面有多个文件,比如a.txt,b.txt.
现在在我的Unit-test类中,我添加了DeploymentItem属性.但文件没有被复制.
这是我的代码.
[TestClass]
[DeploymentItem("TestFile")]
public class CustomLibraryTest
{
public TestContext TestContext { get; set; }
[TestMethod]
[DeploymentItem(@"TestFiles\a.txt")] // THis should deploy a.txt to test deployment directory
{
var path = TestContext.TestDeploymentDir + "a.txt";
// Now when I debug this unit-test, and open path in explorer,
// a.txt is not present in "TestResults\Deploy_fhafeez 2013-05-28 13_02_37\Out" folder
}
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
c# unit-testing deploymentitem vs-unit-testing-framework visual-studio-2012
我有一个包含几个MSTest项目的Visual Studio 2010解决方案.其中一个测试项目需要运行特定目录中的文件.
[TestClass]
[DeploymentItem("ReportEngine.config")]
[DeploymentItem("Report Files", "Report Files")]
public class MyReportTests { }
Run Code Online (Sandbox Code Playgroud)
当我只运行此项目(或测试类)中的测试时,这些测试通过.报告文件将复制到测试执行目录.当我在解决方案中运行所有测试时,这些测试失败.报告文件不会复制到测试执行目录.
为什么会有差异,如何让两次运行部署相同的项目?
我想在测试中添加部署项.
我的解决方案结构如下:
MySolution\
-- TestData\
--addresses.xml
-- ProjectName.TestProject\
--Internal\
--MyTestClass.cs
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下属性添加文件:
[DeploymentItem(@"TestData\addresses.xml", " TestData")]
Run Code Online (Sandbox Code Playgroud)
...什么不起作用但如果我指定absuluten文件路径,vs将复制该文件.
[DeploymentItem(@"C:\Dir1\Dir2\TestData\addresses.xml", " TestData")]
Run Code Online (Sandbox Code Playgroud)