Jam*_*ing 41 c# unit-testing visual-studio-2010 c#-4.0
Visual Studio 2010,x64机器,使用内置Web服务器通过使用内置测试框架的一组单元测试来托管WCF服务.
我有一个XML文件,我的测试需要加载才能运行.我已将此文件包含在测试项目中,并将文件设置为"content"和"始终复制到输出目录".这个文件很好地复制到bin\debug目录.
但是,当我执行测试时,xml文件不在那里.它不是在项目的bin\debug文件夹中查找,而是在测试的工作目录中查找它,C:\ Projects\SAP Reapprovals\TestResults \name_machine 2010-12-06 13_45_43\Out".文件尚未复制到那里.
有没有办法强制复制此文件,或者我是否需要从测试中完全限定引用?
TIA!
詹姆士
更新
我设置了DeploymentItem属性,但文件仍然没有复制.但这肯定看起来像我想要的......任何想法为什么不起作用?
我的测试代码:
[TestMethod]
[DeploymentItem("SAP - GS3 format.xml")]
public void TestProcessSapRoles() {
// I get a 'file not found' error here, and when
// I check the output directory, it isn't there
XElement rolesRoot = XElement.Load("SAP - GS3 format.xml");
}
Run Code Online (Sandbox Code Playgroud)
答案:
感谢CPedros,在他的帮助下,我已经放大了这一点.我运行了SysInternals的Process Monitor,看看它在哪里寻找我的xml文件.这是我发现的:
当我使用ctrl + r,ctrl + t(当前上下文中的调试测试)运行测试时,visual studio 完全忽略了该DeploymentItem属性,甚至没有尝试将文件复制到任何地方.在这种情况下,当我尝试打开它进行阅读时,我收到了"找不到文件"的异常.Visual Studio为测试创建了一个临时工作目录,但其中只有一个文件,AgentRestart.dat.
当我使用工具栏中的"运行单元测试"按钮运行测试时(不确定是什么测试选项),Visual Studio没有复制文件,而是直接从项目目录中引用它.测试通过,没有创建临时工作目录.
当我从菜单选项"run - > tests in current context"(运行,而不是debug)运行测试时,创建了一个临时工作目录,并将xml文件和所有可执行文件复制到它.测试通过了.
当我编辑Local.testsettings(在我的tests文件夹下的Solution Items文件夹下)时,我从左侧菜单中选择了"Deployment",并添加了xml文件.它被添加为[解决方案目录]\[项目目录]\file.xml.我删除了该DeploymentItem属性.现在我能够调试测试; 将xml文件和所有可执行文件复制到为测试创建的临时目录中.
TLDR: Visual Studio忽略了DeploymentItem运行测试的某些方法的属性.解决方案是编辑Local.testsettings,Deployment菜单,并手动添加文件.
谢谢您的帮助!我正在给予CPedros他的回答,因为这对解决这个问题最有帮助.
Per*_* P. 20
尝试使用DeploymentItem属性注释您的测试:http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute(v = VS.100).aspx
这是文档中的代码片段:
[TestClass]
public class UnitTest1
{
[TestMethod()]
[DeploymentItem("testFile1.txt")]
public void ConstructorTest()
{
// Create the file to deploy
Car.CarInfo();
string file = "testFile1.txt";
// Check if the created file exists in the deployment directory
Assert.IsTrue(File.Exists(file), "deployment failed: " + file +
" did not get deployed");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20087 次 |
| 最近记录: |