NUnit - 读写文件的程序集
Posted
技术标签:
【中文标题】NUnit - 读写文件的程序集【英文标题】:NUnit - assembly that reads and writes file 【发布时间】:2010-09-02 16:19:22 【问题描述】:我正在对使用 File.WriteAllLines() 和 File.ReadAllText() 读取和写入持久数据的程序集进行单元测试。当我使用 NUnit Gui 运行单元测试时,测试失败并出现未授权访问异常。
文件试图读写的路径当然会受到程序执行位置的影响。根据我是在 Visual Studio 下运行 NUnit 还是直接从 Nunit /bin 文件夹运行 NUnit,这就是尝试进行读写操作的地方。
我尝试以管理员身份运行 NUnit,并将所有程序集直接复制到 NUnit /bin 文件夹,但测试仍然失败。
我不想直接在程序集中设置路径。
关于如何解决此问题的任何想法?
【问题讨论】:
为什么不完全跳过对框架的测试,只验证是否使用预期的参数值调用了方法? 一种好方法是使用内存流并检查更改,因为它是真实文件。因为您可能想要测试的是算法的逻辑,而不是保存文件的行为,我假设? 除非您必须测试某种文件锁定/共享机制,这是您制作的,否则我认为它需要大量断言...... 【参考方案1】:您可以使用Path.GetTempFileName
获取要写入的临时文件。
或者,您可以使用Assembly.Location
找出您的程序集在哪里,并将其用作目录。
【讨论】:
感谢 Jon,我们使用了 Assembly.location。【参考方案2】:对于 NUnit 3,您应该使用 TestContext 来获取 TestDirectory 或 WorkDirectory。 还有File Asserts 和Directory Asserts,它们可以帮助您以更易读的方式编写测试。
【讨论】:
以上是关于NUnit - 读写文件的程序集的主要内容,如果未能解决你的问题,请参考以下文章