我想在单元测试中使用一些文件,但是我想让这些文件相对于包含单元测试的dll的位置,这可能吗?
换句话说,我已经包含了一个Resources文件夹,其中包含我的单元测试用于测试的一些文件,我标记了文件“Build Action”=“Content”和“Copy to Output Direct”=“Copy Are Always”但是这不符合我的想法。我认为它会复制内容,但是当我的测试运行时,他们说这些文件不存在。
我宁愿不通过显式路径来解决这个问题,因为这些路径会因开发人员机器而异。
我还尝试将以下内容添加为预构建事件以及后构建事件,但这也没有解决我的问题。
xcopy "$(ProjectDir)Resources\*.*" "$(OutDir)Resources\*.*" /i /d /s /y
如果我在上一个构建前或构建后事件之前,我看到数据被复制到我的outdir,但它没有进入TestResults文件夹,在该文件夹中还必须复制Resources文件夹以进行测试有任何数据可供测试。
答案 0 :(得分:2)
unittest runner必须将unittest程序集复制到某个临时文件夹。不要复制这些资源文件,而是考虑将它们包含为嵌入式资源,然后使用Assembly.GetManifestResourceStream()从程序集中加载它们。