我有一些测试需要从excel文件中提供外部数据。这些文件包含在测试项目中,在Visual Studio中,我编辑了测试设置文件(Local.testsettings)来部署数据文件。这使得它在VS中工作正常。
然而,我们也在与TeamCity持续集成,而在TeamCity中这不起作用。我的数据文件不可用于测试。似乎测试是从名为“C:\ TeamCity \ buildAgent \ temp \ buildTmp \ ciuser_AS40VS6 2009-12-11 09_40_17 \ Out”的临时文件夹运行的,并且数据文件不会在那里复制。
我已尝试将数据文件的构建操作更改为“资源”,并将副本设置为输出目录为“始终”,但这没有帮助。
有谁知道如何使这项工作?
我正在运行Visual Studio 2010 beta 2和TeamCity 4.5.5,这就是为什么我首先运行MSTest而不是NUnit ......
答案 0 :(得分:20)
我通过将我的数据文件(在我的情况下通常是XML)添加为嵌入式资源来解决这个问题,并从测试程序集中提取它们。
[TestInitialize]
public void InitializeTests()
{
var asm = Assembly.GetExecutingAssembly();
this.doc = new XmlDocument();
this.doc.Load(asm.GetManifestResourceStream("TestAssembly.File.xml"));
}
答案 1 :(得分:4)
这篇文章回答了这个问题:MSTest copy file to test run folder
答案 2 :(得分:0)
接受的答案在技术上是正确的。但是,根据我的经验,我发现将文件作为资源嵌入还需要记住设置属性“ 嵌入资源”的其他步骤。当您有大量数据文件时,这成为一个挑战。同样,随着数据文件数量的增加,单元测试程序集的大小也在不断增长。就我而言,我有超过500MB的测试数据文件,将它们打包到程序集中并不是一个好主意。
有什么选择?
让数据文件保持原样。不要使用 DeploymentItemAttribute ,不要使用嵌入式资源。请参阅我建议的解决方案How do I make a data file available to unit tests?