简而言之,我有一个在IDE中构建良好的解决方案,并且单元测试都可以通过NUnit GUI(通过NUnitit VS2008插件)运行良好。但是,当我执行我的TeamCity构建运行器,所有需要文件访问的单元测试(例如,针对特定XML文件运行测试)时,我只获得System.IO.DirectoryNotFoundExceptions。
原因很明显:它正在寻找那些支持由错误文件夹中的各种单元测试加载的XML文件。
我的单元测试结构的方式如下:
+-- project folder
+-- unit tests folder
+-- test.xml
+-- test.cs
+-- project file.xaml
+-- project file.xaml.cs
我的所有项目都拥有自己的UnitTests文件夹,其中包含.cs文件以及运行测试所需的任何XML文件,XML模式等。
因此,当我编写test.cs时,我在代码中查找“test.xml”,因为它们位于同一个文件夹中(实际上,我做的事情就像.... \ unit tests \ test.xml ,但那有点傻)。正如我之前所说,测试在NUnit中运行良好。但那是因为单元测试是项目的一部分。从TeamCity运行单元测试时,我正在针对复制到主应用程序输出文件夹的程序集执行它们。这些单元测试XML文件应该不不经意地复制到输出文件夹,只是为了让测试通过。
任何人都可以建议在每个项目中组织我的单元测试的更好方法(这是主应用程序的依赖项),这样我就可以从TeamCity构建运行程序中的NUnit 和执行单元测试?我能想到的唯一其他选择是将测试XML数据放在代码中,而不是从文件中加载它。我宁愿不这样做。
答案 0 :(得分:2)
有时候,在发布问题之前先沉溺于问题是最好的办法。我应该知道我应该只输入程序集自己的项目调试文件夹的相对路径。问题解决了。