我正在对使用File.WriteAllLines()和File.ReadAllText()来读取和写入持久数据的程序集进行单元测试。当我使用NUnit Gui运行单元测试时,测试失败并出现unauthorizedAccessException。
文件尝试读写的路径当然受到程序执行位置的影响。根据我是在Visual Studio下运行NUnit还是直接从Nunit / bin文件夹运行,这是尝试读写操作的地方。
我曾尝试以管理员身份运行NUnit,并已将所有程序集直接复制到NUnit / bin文件夹,但测试仍然失败。
我不想直接在程序集中设置路径。
有关如何解决此问题的任何想法?
答案 0 :(得分:3)
您可以使用Path.GetTempFileName
来获取要写入的临时文件。
或者,您可以使用Assembly.Location
找出程序集的位置,并将其用作目录。
答案 1 :(得分:2)
使用NUnit 3,您应该使用TestContext获取TestDirectory或WorkDirectory。 还有File Asserts和Directory Asserts,它们可以帮助您以更易读的方式编写测试。