【发布时间】:2010-03-27 06:09:18
【问题描述】:
简而言之,我有一个在 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 文件应该不为了让测试通过而随意复制到输出文件夹。
谁能建议一种更好的方法来组织我在每个项目中的单元测试(这是主应用程序的依赖项),这样我就可以从 NUnit 和从 TeamCity 构建运行器执行单元测试?我能想到的唯一其他选择是将测试 XML 数据放入代码中,而不是从文件中加载它。我宁愿不这样做。
【问题讨论】:
标签: visual-studio-2008 unit-testing nunit continuous-integration teamcity